仅播放一次声音

Jas*_*ith 2 html javascript

我正在制作一个小行星躲避游戏,当我的生命结束时,我正在执行以下代码:

gameover.play();
Run Code Online (Sandbox Code Playgroud)

而gameover是这样定义的:

var gameover = new Audio('gameover.wav');
Run Code Online (Sandbox Code Playgroud)

当我执行代码时,它会循环播放声音,我只想播放一次,我该怎么做?谢谢。

JDB*_*JDB 5

我相信将loop财产设置为false将实现您的目标。

var birdSound = new Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
birdSound.play();
Run Code Online (Sandbox Code Playgroud)

var birdSound = new Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
birdSound.play();
Run Code Online (Sandbox Code Playgroud)
var birdSound = new Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
birdSound.play();

var statusElem = document.getElementById('status');
var startTime = Date.now();
updateStatus();

function updateStatus(){
  if (birdSound.ended){
    statusElem.innerText = 'Stopped';
  } else {
    statusElem.innerText = 'Playing (' + ( ( Date.now() - startTime ) / 1000 )  + ')';
    window.setTimeout(updateStatus, 50);
  }
}
Run Code Online (Sandbox Code Playgroud)

测试于:

  • Chrome 44.0.2403.155(64 位)
  • 火狐 40.0.2
  • Safari 8.0.6
  • Vivaldi 1.0.94.2 傻笑

  • @JasonSmith - 听起来您的代码中出现了另一个问题。在 Chrome 版本 44 中似乎工作得很好。 (3认同)
  • 我试过了,不幸的是它仍然循环播放声音。 (2认同)