我通过SoundManager2一堆声音文件试图循环并及时发挥他们在不同的点。 下面的代码需要songArray看起来像这样,用“注意”,包括声音文件以及多长时间播放声音文件的持续时间:
var songArray = [[null],[["clarinet_e4.mp3",1],["clarinet_a4.mp3",1]],[null],[null],[null],[null],[["clarinet_c4.mp3",1]],[["clarinet_c5.mp3",1]],[null],[["clarinet_ab4.mp3",1]],[["clarinet_f3.mp3",1]],[null],[["clarinet_g4.mp3",1]],[["clarinet_d5.mp3",1]],[null],[null]]
它通过阵列中的每个X和起着发现对于给定的X.然后,它由持续时间给定的时间之后停止声音的声音。 该代码运行完全不同的是,当声音停止时,它只是在歌曲的结尾给出了爆裂声。
function playSong(X) {
playSongNotesAtXValue(X);
window.setTimeout(function() {
X++;
if (X >= theSong.songArray.length) {
X = 0;
}
playSong(X);
}, (30/theSong.tempo)*1000)
}
function playSongNotesAtXValue(X) {
var columnToPlay = theSong.songArray[X];
if (columnToPlay[0] != null) {
for (i = 0; i < columnToPlay.length; i++) {
var note = columnToPlay[i];
soundManager.play(note[0],{volume:30});
window.setTimeout(function() {
soundManager.stop(note[0]);
}, (note[1]*30/theSong.tempo)*1000);
}
}
}
什么任何想法可能是错误的?
PS我们已经尝试过在Safari,Chrome和Firefox的最新版本。