2014-09-03 73 views
3

我创建了一个非常基本的HTML5游戏,我打了一个小墙,基本上我有一个数组,这个数组填充了一个声音文件(它是一个声音文件阵列所以,如果需要,我可以分配更多的声音)HTML5 JS同时播放多次相同的声音

this.Sounds["L_Explosion1"] = new Audio("Assets/Sounds/Explosion_1.wav"); 
this.Sounds["L_Explosion1"].volume = 1; 
this.Sounds["L_Explosion1"].load(); 

当玩家之前再次按下空格键我想,所以我运行此代码,如果我按空格键来播放声音

this.Sounds["L_Explosion1"].play(); 

然而,声音播放它不会播放它,我试图做的是播放相同的声音多次事件如果SA我还没有完成,我将如何实现这一目标?

回答

4

为了同时播放声音的多个实例,您需要创建该元素的新副本。一种方法是使用.cloneNode()方法,并在每次按空格键时播放克隆的音频。

this.Sounds["L_Explosion1"].cloneNode(true).play(); 
+0

这工作正常,但你需要提供cloneNode参数(true或false)http://www.w3schools.com/dom/met_element_clonenode.asp – Canvas 2014-09-03 22:42:06

+1

这个链接指向XML DOM .cloneNode ()方法,它需要参数。但对于HTML DOM .cloneNode(),参数是可选的。请参阅:http://www.w3schools.com/jsref/met_node_clonenode.asp 但是,Firefox最近在其.cloneNode()实现中切换了可选参数的默认值,因此安全的做法是始终提供参数使用.cloneNode()时。请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode – 2014-09-03 22:49:30

+0

这是否会在每次按空格键时复制声音?有没有办法清理声音?或删除('结束')节点? – 2017-08-16 19:51:49