function loopthrough (i) {
i++;
if (i <= 20) {
play_multi_sound("aud"+i);
$("#debug").html(i);
setTimeout("loopthrough("+i+");",242); }
else {
loops++;
$("#debug").html("rest");
$("#loops").html(loops);
setTimeout("loopthrough("+0+");",1000);
}
}
我的代码看起来像是在分叉吗?因为经过大约3次循环后,浏览器才会崩溃。我使用过多的HTML5音频,因为我喜欢测试新功能,虽然我仍然是Javascript的新手我真的需要这个代码才能工作。 (我在画布上制作一个简单的节拍游戏,你使用乒乓球拍,每个你以不同的速度击球,它会播放声音,从而制作一个很酷的节拍)... Atm我只是测试很多音频的能力马上就完成了。
所以是的,我的基本问题是“我的代码是否有效,是否分叉,如果你知道更好的方法,那么无论如何都要大大改善这一点?”
谢谢, 汤姆C.
编辑:
刚删除我的循环++; (由于某种原因,它返回NaN,即使它被定义为全局)并且它实际上成功循环了20次而没有缺陷。
答案 0 :(得分:3)
我刚做了一些测试,我坚持在这里,以便代码清晰。
function loopthrough (i) {
i++;
if (i <= 20) {
console.log("bla");
setTimeout(function(){ loopthrough(i); }, 242); }
else {
console.log("lala");
setTimeout(function(){ loopthrough(0); }, 1000);
}
}
loopthrough(0);
工作正常,从未崩溃过。而且它也没有分叉。
所以,它正在崩溃其他东西。
我会在另一个浏览器中尝试这个,看看它是否崩溃 - 可能只是FF beta 8崩溃。
尝试一次删除1位并查看它是否开始工作 - 这是缩小罪魁祸首的好方法。
我敢打赌它的声音正在崩溃......
*更新*
尝试加快超时延迟 - 可能是音频没有完成,然后又尝试再次播放,并以某种方式进行积压。