Javascript onfinish在使用SoundManager2时提前触发

Javascript onfinish在使用SoundManager2时提前触发,javascript,audio,soundmanager2,Javascript,Audio,Soundmanager2,当SoundManager2中的声音播放完毕时,我尝试使用onfinished启动一个函数。我的代码如下: function createSound(id, path) { mySound = soundManager.createSound({ id: id, url: path, volume: 100, onfinish: playNextSound(id), (

当SoundManager2中的声音播放完毕时,我尝试使用onfinished启动一个函数。我的代码如下:

function createSound(id, path) {
    mySound = soundManager.createSound({
            id: id,
            url: path,
            volume: 100,
            onfinish: playNextSound(id),
            (...)
            },
    });
    return mySound;
}

function playNextSound(id) {
    (...)
    alert("Done!");
}
但是,每当我单击play时,就会触发函数(并显示警报),这显然不是应该发生的。我也尝试过将onfinish放在play()函数中,但没有效果


你知道有什么问题吗?

因为你正在执行
playNextSound
函数并将其返回值赋给
onfinish

你应该这样做:

onfinish: playNextSound,

然后如何将参数传递给playNextSound?我必须内联函数吗?(相当长…)只需将
playNextSound
函数放入
createSound
函数中,并确保从函数声明中删除
id
参数:
function playNextSound(){
。函数中对
id
的任何引用都将引用传递到
createSound
中的
id