Audio 在a帧中,当新声音开始播放时,如何停止所有声音?

Audio 在a帧中,当新声音开始播放时,如何停止所有声音?,audio,aframe,Audio,Aframe,当我播放a实体时,它会播放声音,但我如何让它在播放时停止所有其他声音,这样它就不会是一个巨大的混乱的东西 我在谷歌上搜索了这个问题,并尝试添加他们使用的代码,但它们一直不起作用,我尝试了5种不同的代码 我的声音是这样的: <audio id="mercury-sound" src="mercury.mp3" preload="auto"></audio> <script id="mercury" type="text/html"> <

当我播放a实体时,它会播放声音,但我如何让它在播放时停止所有其他声音,这样它就不会是一个巨大的混乱的东西

我在谷歌上搜索了这个问题,并尝试添加他们使用的代码,但它们一直不起作用,我尝试了5种不同的代码

我的声音是这样的:

<audio id="mercury-sound" src="mercury.mp3" preload="auto"></audio>

<script id="mercury" type="text/html">
          <a-entity class="mercury"
            geometry="primitive: sphere; radius: 0.67"
            material="shader: flat; src: ${thumb}"
            event-set__mouseenter="_target: #image-mercury; material.src: ${src}; opacity: 1"
            event-set__mouseleave="_target: #image-mercury; material.src: ${src}; opacity: 0">
            </a-entity>
          </script>


<a-entity template="src: #mercury" sound="src: #mercury-sound; on"></a-entity>
<a-box sound='#first'></a-box>
<a-box sound='#second'></a-box>
<a-box sound='#third'></a-box>

我希望它播放声音,并在播放时停止所有其他声音

编辑:如果其他人有这个问题,这就是修复它的方法


模板组件正在创建子节点,您需要抓取let el=e.target.parentNode。看看这里,我会管理js中所有与声音相关的逻辑,但这是另一个主题:)顺便说一句,可怜的冥王星在哪里!–皮奥特·亚当·米列夫斯基


下面是一种使用
js
的方法。其想法是:

1) 保持一组元素的声音
2) 当单击一个时-在数组中迭代并停止声音
3) 播放“点击”一个

有这样的设置:

<audio id="mercury-sound" src="mercury.mp3" preload="auto"></audio>

<script id="mercury" type="text/html">
          <a-entity class="mercury"
            geometry="primitive: sphere; radius: 0.67"
            material="shader: flat; src: ${thumb}"
            event-set__mouseenter="_target: #image-mercury; material.src: ${src}; opacity: 1"
            event-set__mouseleave="_target: #image-mercury; material.src: ${src}; opacity: 0">
            </a-entity>
          </script>


<a-entity template="src: #mercury" sound="src: #mercury-sound; on"></a-entity>
<a-box sound='#first'></a-box>
<a-box sound='#second'></a-box>
<a-box sound='#third'></a-box>

。但这样做可能更容易理解。请在中查看。

这里有一个使用
js
的方法。其想法是:

1) 保持一组元素的声音
2) 当单击一个时-在数组中迭代并停止声音
3) 播放“点击”一个

有这样的设置:

<audio id="mercury-sound" src="mercury.mp3" preload="auto"></audio>

<script id="mercury" type="text/html">
          <a-entity class="mercury"
            geometry="primitive: sphere; radius: 0.67"
            material="shader: flat; src: ${thumb}"
            event-set__mouseenter="_target: #image-mercury; material.src: ${src}; opacity: 1"
            event-set__mouseleave="_target: #image-mercury; material.src: ${src}; opacity: 0">
            </a-entity>
          </script>


<a-entity template="src: #mercury" sound="src: #mercury-sound; on"></a-entity>
<a-box sound='#first'></a-box>
<a-box sound='#second'></a-box>
<a-box sound='#third'></a-box>

。但这样做可能更容易理解。查看。

它似乎不起作用,可能是因为我的声音是鼠标悬停的,光标位于屏幕的中心,所以你必须看它才能播放声音,当你看下一个对象时,它应该停止第一个声音并播放第二个声音。有没有办法用mouseenter处理这个脚本?将“click”更改为“mouseenter”没有做任何事情切换到带有和的mouseover。两者似乎都在起作用。我还为第一次不播放的音频添加了一个小的解决方法。很抱歉,我无法让它工作,请你看一下,我不知道是什么部分出了问题,或者为什么不工作。模板组件正在创建子节点,您需要抓取
让el=e.target.parentNode
。另外,我会在
js
中管理所有与声音相关的逻辑,但这是另一个主题:)顺便说一句,可怜的冥王星在哪里!非常感谢你的帮助。我想如果我把js放在html中的一个标记中,它仍然可以工作,显然它不能,并且需要放在js文件中。但是谢谢你。布鲁托拒绝了我的邀请:(这似乎不起作用,可能是因为我的声音是鼠标悬停的,光标在屏幕的中心,所以你必须看它才能播放声音,当你看下一个对象时,它应该停止第一个声音并播放第二个声音。有没有办法用鼠标悬停这个脚本?将“单击”改为“鼠标悬停”没有起作用。)Nything使用和切换到mouseover。两者似乎都能正常工作。我还为第一次不播放的音频添加了一些解决方案。很抱歉,我无法使其正常工作,请您查看一下,我不知道是什么部分出了问题或为什么出了问题。模板组件正在创建子节点,您需要抓取
let el=e.target.parentNode
。检查一下,我会在
js
中管理所有与声音相关的逻辑,但这是另一个主题:)顺便说一句,可怜的冥王星在哪里?非常感谢你的帮助。我想如果我把js放在html中的标签中,它仍然会工作,显然它不会,并且需要放在js文件中。但是谢谢你。冥王星拒绝了我的邀请:(