一首歌完成Javascript后播放一首歌

时间:2015-02-18 18:44:01

标签: javascript audio

我正在研究Android的应用程序端口,但遇到了我花了大约8个小时试图修复的问题。我有这2首歌

    Ptero_Lose_Music
    score

通过带

的变量加载
    "Ptero_Lose_Music" : "audio/Ptero_Lose_Music"
    "score"          : "audio/score"

当我在我的游戏画面中调用这两首歌曲时,我想首先播放丢失的音乐,然后是乐谱。我称之为

    Ptero.audio.play('Ptero_Lose_Music');
    Ptero.audio.play('score');

同时播放它们。到目前为止我已经尝试了

    Ptero.audio.play('Ptero_Lose_Music').addEventListener('ended', function(){
         Ptero.audio.play('score');)}

和更多if if语句处理时间。我已经尝试使用gameover场景的.currentTime作为' if'的参数。用于调节歌曲之间时间的声明,但它仍然同时播放它们。我相信我不明白如何正确地对这些类音频进行排序。

所以我用你的答案更新了片段,似乎在进入游戏画面或播放音频之前冻结

function init() {
    Ptero.audio.addEventListener('ended', function _next() { // named so..
        //this.removeEventListener('ended', _next); // .. we can stop infinite loop
        this.play('score');
    });
    Ptero.audio.play('Ptero_Lose_Music');
    //Ptero.audio.play('drop_menu');

我不一定会尝试使用eventlistener,我只想要一个完成后播放一个声音的最好方法。

2 个答案:

答案 0 :(得分:0)

当您使用事件监听器时,您已尝试在mediaElement.play上链接它,这是 void 方法。相反,设置监听器然后在

之后播放它

假设Ptero.audio<audio> 元素

Ptero.audio.addEventListener('ended', function _next() { // named so..
    // this.removeEventListener('ended', _next); // .. we can stop infinite loop
    // replace _src_ or <source>?
    this.play('score');
});
// set up _src_ or <source>?
Ptero.audio.play('Ptero_Lose_Music');

此外,由于mediaElement.play不期望任何参数,您没有准确显示您在代码中所做的事情,这就是为什么我添加了评论// set up _src_ or <source>?

答案 1 :(得分:0)

我最终使用了大胆,只将两个声音合二为一,然后在输出屏幕上初始化

    Ptero.audio.play('Ptero_Lose_Music');