我正在使用HTML5和JavaScript制作游戏。

如何通过JavaScript播放游戏音频?


当前回答

var song = new Audio();
song.src = 'file.mp3';
song.play();

其他回答

我有一些关于音频承诺对象返回的问题和一些关于用户与声音交互的问题,我最终使用了这个小对象,

我建议执行最接近用户使用的交互事件的播放声音。

var soundPlayer = {
  audio: null,
  muted: false,
  playing: false,
  _ppromis: null,
  puse: function () {
      this.audio.pause();
  },
  play: function (file) {
      if (this.muted) {
          return false;
      }
      if (!this.audio && this.playing === false) {
          this.audio = new Audio(file);
          this._ppromis = this.audio.play();
          this.playing = true;

          if (this._ppromis !== undefined) {
              this._ppromis.then(function () {
                  soundPlayer.playing = false;
              });
          }

      } else if (!this.playing) {

          this.playing = true;
          this.audio.src = file;
          this._ppromis = soundPlayer.audio.play();
          this._ppromis.then(function () {
              soundPlayer.playing = false;
          });
      }
  }
};

并执行如下:

<button onclick="soundPlayer.play('https://interactive-examples.mdn.mozilla.net/media/examples/t-rex-roar.mp3');">Play</button>

我用这个方法播放了一个声音…

var audioElement;
if(!audioElement) {
  audioElement = document.createElement('audio');
  audioElement.innerHTML = '<source src="' + '/audio/sound.mp3'+ '" type="audio/mpeg" />'
}
audioElement.play();

这很简单,只需要获取音频元素并调用play()方法:

document.getElementById('yourAudioTag').play();

看看这个例子:http://www.storiesinflight.com/html5/audio.html

这个站点还提供了一些其他很酷的功能,比如load()、pause()和音频元素的其他一些属性。

根据安全要求,用户必须与网页进行交互才能允许音频,这就是我的做法,基于阅读许多文章,包括在这个网站上

在html中定义所需的音频文件 有一个带有点击的开始游戏按钮 当按钮被点击,然后播放和暂停所有的音频文件,除了一个你想在开始播放

因为所有的音频文件都是在同一个OnClick上“播放”的,你现在可以在游戏中的任何时间不受限制地播放它们

注意,为了最好的兼容性,不要使用wav文件,MS不支持它们

使用mp3和ogg,可以覆盖所有设备

例子:

<audio id="welcome">
    <source src="URL/welcome.ogg" type="audio/ogg">
    <source src="URL/welcome.mp3" type="audio/mpeg">
    Your browser does not support the audio element.
</audio>

根据需要重复游戏中的所有音频

然后:

document.getElementById("welcome").play();
document.getElementById("welcome").pause();

重复需要,但不要暂停你想听到的音频时,游戏开始

new Audio('./file.mp3').play()