【发布时间】:2016-07-09 07:39:00
【问题描述】:
我正在构建一个 javascript 游戏,我想创建一个基于声音文件 sn-ps 的背景音乐。短 mp3 文件,可将它们作为连续曲目播放。我尝试在音频文件上绑定“结束”事件处理程序,但这会导致音频片段之间出现延迟。
为了解决这个问题,我制作了一个仍然无法正常工作的 hacky 解决方案,在完成前 1 秒更改了音频。
Ebuc.manageAudio = function(){
var listener = function (event) {
if (this.currentTime > (this.duration - 1) && Ebuc.bgnext) {
Ebuc.manageAudio();
console.log("aduio");
Ebuc.bgnext = false;
}
if(this.currentTime < 2){
Ebuc.bgnext = true;
console.log("reset");
}
console.log(event);
console.log("listener active")
};
var color = Level.current.color;
if(Ebuc.bgsong == null) {
Ebuc.bgsong = new Audio('assets/sound/' + Resources.audioSetList[color].getcurrentsong());
Ebuc.bgsong.addEventListener('timeupdate', listener, true);
}
else{
Ebuc.bgsong = new Audio('assets/sound/' + Resources.audioSetList[color].getcurrentsong());
}
Ebuc.bgsong.play();
Resources.audioSetList[color].next();
};
此示例运行一次,当需要将片段 2 切换到片段 3 时,循环停止。控制台记录事件侦听器会在停止之前提供 4 次日志。
Q1:为什么这个事件监听器突然消失了? Q2:链接这些音频片段是否有非 hack 解决方案。
提前谢谢你。
【问题讨论】:
标签: javascript audio