【发布时间】:2018-09-15 05:16:49
【问题描述】:
我在一个场景中有几个实体,它们是外部触发可见的。当它们可见并且用户将鼠标悬停在它们上时(基于注视,因此当用户查看实体时),应该播放每个实体唯一的音频。当用户看向别处时,音频应该停止。
我遇到的问题是,当同时打开多个对象时,我的自定义组件中的侦听器似乎不知道正在播放哪个实体,并且会停止/启动错误的音频。如何确保侦听器用于正确的实体?
引用这个:Play sound on click in A-Frame
js:
AFRAME.registerComponent('play-audio', {
init:function() {
let playing = false;
let audio = this.el.components.sound;
this.el.addEventListener('mouseenter', () => {
var viz = this.el.getAttribute('material').visible;
if (viz){
if(!playing) {
audio.playSound();
} else {
audio.stopSound();
}
playing = !playing;
}
});
this.el.addEventListener('mouseleave', () => {
audio.stopSound();
playing = !playing;
})
}
})
示例 HTML:
<a-sound id="popup1" data-clickable play-audio autoplay="false" loop="false" volume="5" visible="false" src="#audio1">
</a-sound>
<a-sound id="popup2" data-clickable play-audio autoplay="false" loop="false" volume="5" visible="false" src="#audio2">
</a-sound>
【问题讨论】:
标签: aframe