HTML5编写游戏程序,如何播放音效?

andy HTML5 194

HTML5编写游戏程序,如何播放音效?

回复

共1条回复 我来回复
  • terry
    terry
    这个人很懒,什么都没有留下~
    评论

    具体要求在数量上是很少的:

    播放和混合多个声音,
    多次播放相同的样本,可能会重叠播放,
    在任何时候中断样本播放,
    最好播放包含(低质量)原始PCM的WAV文件,但我当然可以转换这些文件。

    我的第一种方法是使用HTML5 <audio>元素并在页面中定义所有声音效果。火狐对WAV文件的播放效果很差,但是多次调用#play并不能多次播放示例文件。根据我对HTML5规范的理解,<audio>元素还跟踪播放状态,这就解释了为什么。

    我的第一个想法是克隆音频元素,因此我创建了以下小型JavaScript库来完成此操作(依赖于jQuery):

    var Snd = {
    init: function() {
    $(“audio”).each(function() {
    var src = this.getAttribute(‘src’);
    if (src.substring(0, 4) !== “snd/”) { return; }
    // Cut out the basename (strip directory and extension)
    var name = src.substring(4, src.length – 4);
    // Create the helper function, which clones the audio object and plays it
    var Constructor = function() {};
    Constructor.prototype = this;
    Snd[name] = function() {
    var clone = new Constructor();
    clone.play();
    // Return the cloned element, so the caller can interrupt the sound effect
    return clone;
    };
    });
    }
    };

    因此,现在我可以从Firebug控制台执行Snd.boom();并播放snd/boom.wav,但是我仍然不能多次播放相同的示例。看起来<audio>元素实际上更像是一个流媒体功能,而不是用来播放声音效果的东西。

    有没有一种聪明的方法来实现这一点,最好是只使用HTML5和JavaScript?

    我还应该提一下,我的测试环境是Ubuntu 9.10上的Firefox3.5。我尝试过的其他浏览器– Opera、Midori、Chromium、Epiphany –都产生了不同的结果。有些什么都不玩,有些则抛出异常。

    1年前 0条评论