我正在为Android应用程序端口工作,但是遇到了一个问题,我花了大约8个小时来修复。我有这两首歌

    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语句处理时间。我曾尝试使用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');

我并不一定要使用事件监听器,我只是想以一种最好的方式在播放完声音后播放一种声音。

最佳答案

使用事件侦听器后,您尝试将其链接到 mediaElement.play 上,这是一个无效方法。而是设置监听器,然后播放

假设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>?注释的原因

关于javascript - 在歌曲完成Java播放后播放歌曲,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28591416/

10-10 00:37
查看更多