1
我想通过SoundManager2中的一堆声音文件循环播放,并在各个时间点播放它们。下面的代码需要songArray看起来像这样,用“注意”,包括声音文件以及多长时间播放声音文件的持续时间:SoundManager2 - 停止声音时的失真
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);
}
}
}
任何想法可能是错误的?
P.S.我们已经尝试过最新版本的Safari,Chrome和Firefox。