在 Chrome 中预加载多个 (798) 音频文件

用户9213

我正在制作一个游戏,我想加载 798 个声音文件,但只有在 Chrome、Firefox 中才有问题。示例代码:https : //jsfiddle.net/76zb42ag/,查看控制台(按F12)。

有时脚本只加载 100、500、700 个文件,有时很好。如果我将文件数量减少到 ex。300 可以(总是)。我怎么解决这个问题?我需要回电或任何想法?游戏将离线(节点 webkit)。

Javascript代码:

var total = 0;
// sample file to download: http://www.sample-videos.com/audio/mp3/crowd-cheering.mp3
// sounds.length = 798 files 
var sounds = [

    (...limit character, see https://jsfiddle.net/76zb42ag/...)
];

for (var i in sounds) {
    load(sounds[i]);
}

function load(file) {
    var snd = new Audio();
    snd.addEventListener('canplaythrough', loadedAudio, false);
    snd.src = file;
}


function loadedAudio() {
    total++;
    console.log(total);
    if (total == sounds.length){
        console.log("COMPLETE");
    }
}
萨曼尼姆

这真的不是代码问题。这是一个普遍的架构问题。

不仅取决于数量,还取决于样本的大小,您不太可能一次加载它们。即使可以,它也会因为内存使用量过高而运行得很差,并且可能会在一定时间后使选项卡崩溃。

由于它处于离线状态,我想说您甚至可以完全不预加载它们,因为读取速度几乎是瞬时的。

如果您发现这不合适,或者您可能一次需要 5 个,而且速度可能太慢,我会说您需要以一种可以确定需要哪些声音的方式来构建您的游戏某个游戏状态,然后加载它们(并删除对不需要的引用,以便它们可以被垃圾收集)。

这正是所有游戏在向您显示加载屏幕时所做的,并且出于相同的原因。

如果你想避免“加载屏幕”,你可以通过想办法知道即将发生的事情并提前加载来变得聪明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档