我正在为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/