1

我在 Windows 商店应用程序中播放音频时遇到困难。我正在使用 JavaScript。代码如下。

当我尝试从 200 多种声音(平均大小 15KB)中播放声音时,听起来像是来自太空堡垒卡拉狄加的 Cylon 正在攻击我的应用程序。如果我等待足够长的时间就可以了,或者如果声音数组较少,那么它显然也加载得更快。

是否有事件或某种方式来确定应用程序何时准备好播放所有声音?还是更好的方法?

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

1 回答 1

0

好吧,事情是我相信 for 循环,您主要做的是首先将所有声音文件加载到内存中(缓存过多),这正如预期的那样会减慢速度。

我建议进行一些更改:

1- 使用 [] 创建数组

2-缓存一个 var arrayLength = play.length 并在循环中使用它而不是 i < play.length 因为这将检查每个元素。

3-事实上,我建议您删除循环并在需要时(onclick)加载音频文件(在其中放置一些加载图像或画布以方便用户使用)。

为此,您可能需要重新编写一些代码,比如说

var play = { sound1: urlWord, sound2: urlWord, sound3: urlWord,......};

虽然不是数组(数组在 JS 解释器中奇怪地实现),但您可以在它上面循环,如下面的链接: stackoverflow 链接上迭代对象主要用于

在点击中:

  something.onClick = function () {
//if the below works or else just use a temp var
    new Audio("/sound/" + play[soundPos] + ".mp3").play();        
    }
于 2013-08-04T19:33:59.293 回答