我正在使用画布标签构建一个简单的游戏,并想为其添加一些声音效果。 如果我使用以下代码来播放 SFX...
function playSfx( sound ) {
var snd = new Audio("file.mp3");
snd.play();
}
垃圾收集/内存管理是否足够聪明,可以播放声音,然后处理 Audio 对象?或者我是否必须跟踪该对象并在其播放完毕后销毁它?
通常垃圾收集器确实可以轻松删除音频对象。他们在这方面非常有效率。但是,如果您播放大量音频,则可能会遇到问题。因此,以防万一您应该使用事件侦听器手动管理它们。 例如:
let audioTrash = {} // Define an object to store trash or cache.
audioTrash.audio = new Audio('./audioFilesXD/walkingLikeMichaelJackson.mp3/');
audioTrash.audio.play();
audio.addEventListener('ended', () => {
delete audioTrash.audio;
})
这是一种可以做到的方法。可能不是最好的,但我希望它能帮助你:)