1

我在游戏中使用这些声音,所以我在整个播放过程中通过 JQuery 多次调用它们。在 fireFox 中,声音播放正常,但在 Chrome 和 Safari 中,它们每次只播放一次。

<div class="audio-wrapper">

    <audio id="successSound" preload="auto">
        <source src="sounds/games-sound-fx/cashtill.ogg" type='audio/ogg; codecs="vorbis"'></source>
        <source src="sounds/games-sound-fx/cashtill.mp3" type='audio/mpeg; codecs="mp3"'></source>
    </audio>

    <audio id="failSound" preload="auto">
        <source src="sounds/games-sound-fx/electric.ogg" type='audio/ogg; codecs="vorbis"'></source>
        <source src="sounds/games-sound-fx/electric.mp3" type='audio/mpeg; codecs="mp3"'></source>
    </audio>

    <audio id="moveSound" preload="auto">
        <source src="sounds/games-sound-fx/throw.ogg" type='audio/ogg; codecs="vorbis"'></source>
        <source src="sounds/games-sound-fx/throw.mp3" type='audio/mpeg; codecs="mp3"'></source>
    </audio>

    <audio id="hitSound" preload="auto">
        <source src="sounds/games-sound-fx/hit.ogg" type='audio/ogg; codecs="vorbis"'></source>
        <source src="sounds/games-sound-fx/hit.mp3" type='audio/mpeg; codecs="mp3"'></source>
    </audio>

    <audio id="missSound" preload="auto">
        <source src="sounds/games-sound-fx/miss.ogg" type='audio/ogg; codecs="vorbis"'></source>
        <source src="sounds/games-sound-fx/miss.mp3" type='audio/mpeg; codecs="mp3"'></source>
    </audio>

    <audio id="audio-bg">
        <source src="sounds/games-sound-fx/BGmusic.ogg" type='audio/ogg; codecs="vorbis"'></source>
        <source src="sounds/games-sound-fx/BGmusic.mp3" type='audio/mpeg; codecs="mp3"'></source>
    </audio>
</div>

在脚本中,我把我的大部分声音都称为这样..

var successSound = $("#successSound")[0];
successSound.play();

但其中一些具有超时功能。有没有更好的方法可以正确支持所有浏览器?

4

1 回答 1

1

当您播放声音时,它会在音频通道上播放。使用您列出的代码,当您尝试播放第二个声音时,它将尝试在同一音频通道上播放。如果此时第一个声音还没有结束,它将阻止正在播放的第二个声音。诀窍是有一点 Javascript 可以判断音频元素是否已完成播放,如果没有,请使用不同的。

这是一个带有一些很好的示例代码的 URL:http: //www.storiesinflight.com/html5/audio.html

于 2012-11-02T11:13:36.553 回答