我在Windows商店应用中播放音频时遇到了困难。我正在使用JavaScript。代码如下。
当我尝试从超过200种声音(平均大小为15KB)的阵列中播放声音时,它听起来像是来自太空堡垒卡拉狄加的赛隆,正在攻击我的应用程序。如果我等待足够长时间就可以了,或者如果声音数组较少那么它显然加载得更快。
是否有事件或某种方式来确定应用何时准备播放所有声音?还是更好的方法?
var play = new Array("over", "200", "sounds", "in", "this", "list", "that", "average", "15KB");
for (var i = 0; i< play.length; ++i){
tmpAudio = new Audio("/sound/" + words[i] + ".mp3");
play[i] = tmpAudio;
}
something.onClick = function () {
play[soundPos].play();
}
答案 0 :(得分:0)
嗯,问题是我相信for循环,你主要做的是将所有声音文件加载到内存中(太多缓存),首先按预期放慢速度。
我建议做一些改变:
1-使用[]创建阵列
2-缓存var arrayLength = play.length并在循环中使用它而不是i&lt; play.length,因为这将检查每个元素。
3-事实上,我建议你删除循环并在需要时(onclick)加载音频文件(在那里放一些加载图像或画布以方便用户使用)。
为此,您可能需要重新编写一些代码,例如
var play = { sound1: urlWord, sound2: urlWord, sound3: urlWord,......};
虽然不是数组(数组在JS解释器中奇怪地实现) 你可以循环它,如下面的链接: stackoverflow link on iterating over objects mainly for in
在onclick中:
something.onClick = function () {
//if the below works or else just use a temp var
new Audio("/sound/" + play[soundPos] + ".mp3").play();
}