0

我正在使用 php 生成创建和播放声音的 javascript:

$playsound .= "var $sound = new Audio('http://$siteurl/sounds/$sound.ogg'); soundplayer($sound $whentostart, $whentostop);   ";

soundplayer 是一个 javascript 函数,它接受声音名称,以及何时开始和停止的持续时间作为参数。

我遇到的问题是我有一组声音播放器(带有参数),我想一起玩......即某些组同时播放声音。然后是我需要在一段时间后开始的其他组。

例如: 本组播放:soundplayer(with params) soundplayer(with params)

介于 1 到 4 秒之间的某个时间

然后这个组播放:soundplayer(with params) soundplayer(with params)

然后重复尽可能多的组

我可以在 jquery 或 javascript 中做什么来包装对 soundplayer() 组的每个函数调用,以使每个组以特定的间隔播放?

4

1 回答 1

1

您可以使用setTimeout(chaining) 或setInterval(重复直到您停止它) 来做到这一点。

在 JavaScript 中,从概念上讲,为了简单起见:

// Put the things you want to do in a function
function doThingsInOrder() {
    doOneThing('someArgument');
    doAnotherThing();
    doAThirdThing('someArgument');
    // Maybe one of them should be delayed a bit
    setTimeout(doADelayedThing, 200); // 200 = 200ms = 1/5th second
}

// Call the function every four seconds, forever
setInterval(doThingsInOrder, 4000);

就是那个setInterval版本。该setTimeout版本只涉及在最后doThingsInOrder通过调用自身:setTimeout

// Put the things you want to do in a function
function doThingsInOrder() {
    doOneThing('someArgument');
    doAnotherThing();
    doAThirdThing('someArgument');
    // Maybe one of them should be delayed a bit
    setTimeout(doADelayedThing, 200); // 200 = 200ms = 1/5th second

    // Set up next call
    setTimeout(doThingsInOrder, 4000);
}

// Start the process off
setTimeout(doThingsInOrder, 4000);
于 2012-05-15T04:55:44.477 回答