游戏开发:在播放</audio>之前重启声音(<audio>元素)

时间:2014-01-05 14:58:48

标签: javascript html5-audio

我遇到了一些关于我的小型网络游戏项目的问题:  我有一些声音文件,用HTML这样给出:

<audio id="shotSound" preload="auto">
    <source src="../sound/shot.mp3" type="audio/mpeg">
    Your browser does not support the audio element.
</audio>

preload =&#34; auto&#34;应该在页面init上立即加载内容吗? 现在,我需要使用javascript来触发声音(按键):

var audio = document.getElementById("shotSound");
audio.play();

这是有效的,但是如果我尝试连续拍摄或者更快(一次又一次拍摄)它会在第一次拍摄后不能拍摄。那么,如果我持有&#34;拍摄&#34;会发生什么?按钮:听到的声音就像重复一样 - 这显然是错误的。

非常欢迎任何想法/建议! 如果我不清楚,请告诉我。

谢谢

1 个答案:

答案 0 :(得分:0)

不要将audio-tag放入HTML文档中。使用

在Javascript中预加载声音效果
shotSound = new Audio();
shotSound.src = "../sound/shot.mp3";
shotSound.load();

将shotSound变量保留在范围内,因此不会进行垃圾回收。然后,当您需要播放声音时,请创建一个新的Audio对象:

new Audio("../sound/shot.mp3").play();

它将立即播放,因为声音文件已经被缓存。而且因为它是一个新的音频对象,它不会中断同时播放的其他实例。