【问题标题】:Loading many Audio files in Javascript Windows Store App在 Javascript Windows Store App 中加载许多音频文件
【发布时间】:2013-08-04 19:02:44
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    我会建议一些更改:

    1- 使用 [] 创建数组

    2- 缓存一个 var arrayLength = play.length 并在循环中使用它而不是 i

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

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

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

    虽然不是数组(数组在 JS 解释器中的实现很奇怪) 您可以按以下链接循环访问它: stackoverflow link on iterating over objects mainly for in

    在点击中:

      something.onClick = function () {
    //if the below works or else just use a temp var
        new Audio("/sound/" + play[soundPos] + ".mp3").play();        
        }
    

    【讨论】:

    • 谢谢。我在踢自己,也谢谢你!是的,我真正需要做的就是点击新音频并播放。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多