使用标准的gamePad代码,没有找到声音文件,即使路径名称是正确的?



使用标准gamePad代码不是找到声音文件,即使路径名称是正确的?

我确实研究过这个问题。当然,我已经在SO上找到了一些代码,声称可以解决这个困境,但是这个发布的代码没有。

I amsuccessfully在BBEdit的"标记"下使用预览找到声音文件;菜单。但是,oh-oh曲面当我在我的商业服务器上运行游戏时,

我甚至成功当使用按键代码被激活时——本地在我的Mac上

失败是当我使用外部服务器运行我的gamePad代码来查找声音文件时,我的所有源代码都加载到我的服务器上。在这种情况下,声音不播放。

<文件层次结构/strong>

games folder
Game_1 folder
game1.html
Game_Support folder
audio folder
js folder

<body onload="doBodyOnLoad()">

JS:

function doBodyOnLoad() {
$(document).ready(function() {
// ... //
});   // $(document).ready
}   // doBodyOnload

function setupKeypresses() {
$(document).keydown(function(evt) {

let code = evt.keyCode || evt.which;
// for example:
if (code === "R")
{
movePaddleRight();  // this will call ouch() below
}

});

}   // setupKeypresses

function PlaySound(id, src) {
let theSound = new Audio();
theSound.src = src;

theSound.play();

}   // PlaySound

function ouch() {
updateScore(--thisScore);

// even the absolute path doesn't work ?
//  var theSnd = "http://lovesongforever.com/games/Game_1/Game_1_Support/audio/explosion.mp3";
var theSnd = "Game_1_Support/audio/explosion.mp3";
PlaySound("audioPlaceHolder", theSnd);

// fade either the whole Board (okay), or just the Paddle (not! so much)
doFade("#gameBoard");   // doFade("#gameBoard > #gamePaddle") [not ready for Prime Time]
}   // ouch

非常感谢你对我的耐心!

这是因为您试图在没有用户交互的情况下自动播放音频元素。

Firefox通过使用NotAllowedError拒绝HTMLMediaElement.play()返回的承诺来表示阻塞的play()对JavaScript的调用。所有阻止自动播放的主要浏览器都通过该机制表示阻止播放。一般来说,web作者在调用HTMLMediaElement.play()时的建议是不要假设对play()的调用总是成功,并且总是处理play()返回的承诺被拒绝。

https://hacks.mozilla.org/2019/02/firefox - 66块-自动-声音-视频-和- audio/

我想如果你先点击或点击页面就可以了。手柄按键也可以工作,这取决于实现。

最新更新