小编Mar*_*ngh的帖子

如何在Javascript中删除音轨之间的暂停

我正在构建一个javascript游戏,我想基于声音文件片段创建背景音乐.短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();

};
Run Code Online (Sandbox Code Playgroud)

此示例有效一次,当需要将片段2切换到片段3时,循环停止.记录事件监听器的控制台在停止之前给出4次日志.

Q1:为什么这个eventlistener突然消失了?Q2:是否存在用于链接这些音频片段的非黑客解决方案.

我提前谢谢你.

javascript audio

8
推荐指数
1
解决办法
407
查看次数

标签 统计

audio ×1

javascript ×1