Javascript 为iOS Web应用程序优化音频
我目前正在开发和测试一款使用Javascript和Cordova框架的iOS游戏。我试图在触摸某些节点时添加声音效果。因为节点可以以任何速率重复接触。我在用Javascript 为iOS Web应用程序优化音频,javascript,ios,cordova,audio,web-applications,Javascript,Ios,Cordova,Audio,Web Applications,我目前正在开发和测试一款使用Javascript和Cordova框架的iOS游戏。我试图在触摸某些节点时添加声音效果。因为节点可以以任何速率重复接触。我在用 var snd = new Audio("audio/note_"+currentChain.length+".mp3"); snd.play(); 这是我需要的,但当我启用这些效果时,我发现游戏落后了。我正在处理mp3文件,这些文件的大小已经缩小到16kb左右,但仍然存在很大的延迟 在我的情况下,优化声音的最佳方法是什么?我是否因为应用
var snd = new Audio("audio/note_"+currentChain.length+".mp3");
snd.play();
这是我需要的,但当我启用这些效果时,我发现游戏落后了。我正在处理mp3文件,这些文件的大小已经缩小到16kb左右,但仍然存在很大的延迟
在我的情况下,优化声音的最佳方法是什么?我是否因为应用程序不是本地应用程序而受到质量限制
谢谢 预加载它们并在需要时准备好它们是最好的选择。我刚刚写了一个快速的自足的结束语,我想它将向你展示你最想知道的事情
var playSound = (function () {
var sounds = 15, // idk how many mp3 files you have
loaded = new Array(sounds),
current = -1,
chain = [],
audio,
i;
function incrementLoaded(index) {
loaded[index] = true;
}
// preloads the sound data
for(i = 0; i < sounds; i++) {
audio = new Audio();
audio.addEventListener('canplay', incrementLoaded.bind(audio, i));
audio.src = 'audio/note_' + i + '.mp3';
chain.push(audio);
}
// this will play audio only when ready and in sequential order automatically
// or "which" index, if supplied
return function (which) {
if(typeof which === 'number') {
current = which;
} else {
current = (current + 1) % sounds;
}
// only play if loaded
if(loaded[current]) {
chain[current].pause();
chain[current].currentTime = 0;
chain[current].play();
}
};
}());
// would play sounds in order every second
setInterval(function () {
playSound();
}, 1000);
如果您使用多个文件,我建议您使用声音精灵的思想将其更改为单个文件。此链接有更多详细信息:
根据我自己的经验,如果声音无法准确播放,请尝试提高文件比特率,请参阅:谢谢您花时间这么做。我有点理解它是如何工作的,但我想知道我是如何使用它的。我复制了这个函数,并在我通常调用声音播放的地方粘贴了playSound函数调用,但没有得到任何响应。很明显,我遗漏了一些东西,只是不确定是什么。