我正在使用 HTML5 制作手机游戏。有一个背景音乐在游戏过程中运行,最好在我导航到另一个页面时停止......该逻辑在旧款 iPhone 和 android 上正常工作。但是,在 iPhone 4 和 iPad 上,音乐不会停止并继续播放(即使我导航到另一个网站),直到浏览器关闭。当然有电话
music_var.pause()代码中的函数以及卸载处理程序......但这似乎根本不起作用。关于这里发生的事情有什么想法吗?
我正在使用 HTML5 制作手机游戏。有一个背景音乐在游戏过程中运行,最好在我导航到另一个页面时停止......该逻辑在旧款 iPhone 和 android 上正常工作。但是,在 iPhone 4 和 iPad 上,音乐不会停止并继续播放(即使我导航到另一个网站),直到浏览器关闭。当然有电话
music_var.pause()代码中的函数以及卸载处理程序......但这似乎根本不起作用。关于这里发生的事情有什么想法吗?
标签有各种各样的差异audio
,有些浏览器甚至pause
在被告知时也不会(加上没有正确发出回调、预加载甚至工作)。
为了规避这个问题,您可以在暂停之前将volume
参数设置为。0
尝试使用 onbeforeunload 停止音乐,因为当 iphone 上的 safari 正在播放音乐时,即使退出应用程序,音乐也会继续在后台播放(有点像音乐如何在后台播放)。如果你双击主页按钮,按住 Safari 图标直到出现减号按钮,然后点击减号,音乐应该停止。这是因为较旧的 iphone 可能没有运行 iOS4 或更高版本(它具有多任务处理功能,即使没有运行也可以在后台播放 safari 的音乐)。
利用循环来检查用户是否在网页上。存储时间。
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 上工作起来就像一个魅力。