1

我正在使用 HTML5 制作手机游戏。有一个背景音乐在游戏过程中运行,最好在我导航到另一个页面时停止......该逻辑在旧款 iPhone 和 android 上正常工作。但是,在 iPhone 4 和 iPad 上,音乐不会停止并继续播放(即使我导航到另一个网站),直到浏览器关闭。当然有电话

music_var.pause()
代码中的函数以及卸载处理程序......但这似乎根本不起作用。关于这里发生的事情有什么想法吗?

4

3 回答 3

0

标签有各种各样的差异audio,有些浏览器甚至pause在被告知时也不会(加上没有正确发出回调、预加载甚至工作)。

为了规避这个问题,您可以在暂停之前将volume参数设置为。0

于 2012-04-04T22:34:10.207 回答
0

尝试使用 onbeforeunload 停止音乐,因为当 iphone 上的 safari 正在播放音乐时,即使退出应用程序,音乐也会继续在后台播放(有点像音乐如何在后台播放)。如果你双击主页按钮,按住 Safari 图标直到出现减号按钮,然后点击减号,音乐应该停止。这是因为较旧的 iphone 可能没有运行 iOS4 或更高版本(它具有多任务处理功能,即使没有运行也可以在后台播放 safari 的音乐)。

于 2012-04-04T23:21:24.230 回答
0

正如我在这里发布的那样,设法找到了解决方案

利用循环来检查用户是否在网页上。存储时间。

var lastSeen;
var loop = function (){
    lastSeen = Date.now();
    setTimeout(loop, 50);
};
loop();

var music = document.getElementById('music');
music.addEventListener('timeupdate', function (){
    if(Date.now() - exports.lastSeen > 100){
        this.pause();
    }
}, false);

这大致就是我的文件的样子。由于 timeupdate 事件会在音频元素上持续触发,如果它正在播放,我只需要检查我的循环最后一次调用的时间。如果它在 100 多毫秒前被调用,我会暂停音乐。在我测试过的 iPad 上工作起来就像一个魅力。

于 2013-01-21T12:07:27.350 回答