在Javascript Windows应用商店中加载许多音频文件

时间:2013-08-04 19:02:44

标签: javascript windows microsoft-metro windows-store-apps

我在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();
}

1 个答案:

答案 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();        
    }