Javascript 为什么可以';我是否可以使用HTML5音频标签多次播放声音?

Javascript 为什么可以';我是否可以使用HTML5音频标签多次播放声音?,javascript,html,audio,html5-audio,Javascript,Html,Audio,Html5 Audio,这就是声音的“存储”方式: 但是声音只会第一次播放,永远不会再播放! 我尝试将控制台中的“currentTime”重置为0,但我确实得到了以下结果: >document.getElementById("hammer").currentTime = 0 0 >document.getElementById("hammer").currentTime 0.340... 为什么会发生这种情况,我该如何修复它?几个月前,我在用HTML5开发钢琴时遇到了同样的问题。当一个键被一次又一次地按下

这就是声音的“存储”方式:

但是声音只会第一次播放,永远不会再播放! 我尝试将控制台中的“currentTime”重置为0,但我确实得到了以下结果:

>document.getElementById("hammer").currentTime = 0
0
>document.getElementById("hammer").currentTime
0.340...

为什么会发生这种情况,我该如何修复它?

几个月前,我在用HTML5开发钢琴时遇到了同样的问题。当一个键被一次又一次地按下时,我不得不停止,倒带并在每次按键时播放音频。我使用了在这个问题中编写的代码,它在Firefox和Safari中工作,但在Chrome中没有。在Chrome中,它不再播放。最后,我不得不修改代码以使其正常工作。在seek上为事件
添加了一个侦听器,然后设置
currentTime=0
,并在调用的事件处理程序中播放
play
。这对我有用。同样地,我必须等待一次行动的发生,然后才能在许多地方采取下一次行动。这是Chrome的旧版本。后来我发现,即使是某些版本的浏览器也支持音频,但每个版本支持音频的方式略有不同。如果我们只是简单地放置一个音频标签并播放音频,这种差异将不可见,但当我们尝试使用Javascript控制音频时,会体验到这种差异。无论如何,它都是关于旧版本的浏览器,在所有最新版本中都要好得多。因此,请查看最新版本的Chrome(即使我的钢琴也使用Chrome 10,没有代码修改),关于音频格式,我建议您保留音频的mp3和ogg文件,而不是单个wav文件。

请参阅和前面的三张幻灯片

对于制作一些很棒的游戏的所有资源,他们的谈话的一部分:

到目前为止,音频仍然无法在所有浏览器中一致工作:

  • 元素必须在Chrome中重新加载,否则只能播放一次
  • 不能在Firefox中重新加载元素,否则会出现延迟

我最近在html5上遇到了这个问题。除了狩猎,他到处都工作。 在调用play()之前使用load()解决了这个问题。它还有助于确保在事件处理程序触发声音时,声音效果不会与沉重的点击器重叠

Here what I used
<audio id="sound-one" preload="auto">
    <source src="http://myurl/foo.mp3"></source>
    <source src="http://myurl/foo.ogg"></source>
</audio>


<a href="#" id="navigation-id">click here</a>  



Jquery
$("#navigation-id") //this attached is to an element on the page
.mouseover(function() {
    sound-one.load();                               
    sound-one.play();
    });
这里是我使用的
滑动分页
$(“#导航id”)//此附加到页面上的元素
.mouseover(函数(){
声音一。加载();
听一声,玩一玩;
});

对于将来偶然看到这篇文章的人来说,音频标签并不是制作游戏音频的好方法


我强烈建议您花点时间学习wav文件。

也许是wav文件?这在Chrome上对我来说很好。(不要介意声音文件,这是我能找到的最短的声音文件。)但这怎么可能呢?不管怎样,也许是我的电脑出了问题,我会在一台服务器上运行它,然后在另一台服务器上测试它……我不知道;有时,我的Chrome突然拒绝再播放任何
(尚未使用
进行测试);甚至UI也控制着某种冻结。当我重新启动Chrome时,这一切都解决了。这在所有浏览器上都会发生吗?除了Chrome之外,我没有在任何浏览器上测试它。等一下,我会的。编辑:我的Firefox版本不支持HTML5…谢谢你提供的好信息!我会测试这个函数,我可能会接受你的答案。(我自己没试过,但这些家伙都是老板,所以我希望他们的东西是正确的:)为什么这样工作?我需要重新下载整个音频文件以便第二次播放,这不是有点迟钝吗?@user2486570是的,但您可以使用“Cache Control”http头进行缓存,这样文件就不会被再次下载
>document.getElementById("hammer").currentTime = 0
0
>document.getElementById("hammer").currentTime
0.340...
function playSoundEvent() {
  if (window.chrome) elems[index].load()
  elems[index].play()
  index = (index + 1) % elems.length
}
Here what I used
<audio id="sound-one" preload="auto">
    <source src="http://myurl/foo.mp3"></source>
    <source src="http://myurl/foo.ogg"></source>
</audio>


<a href="#" id="navigation-id">click here</a>  



Jquery
$("#navigation-id") //this attached is to an element on the page
.mouseover(function() {
    sound-one.load();                               
    sound-one.play();
    });