编辑2:这是工作代码。非常感谢 Piotr 的帮助,没有你们我不可能如此轻松地完成这件事。
sceneEl.querySelector('a-sound').setAttribute('sound', {src:url3});
let playing = false;
var el = document.querySelector('a-box');
let audioEl = document.querySelector("a-sound");
var audio = audioEl.components.sound;
el.addEventListener('click', () => {
if (!playing) {
audio.playSound();
} else {
audio.stopSound();
}
playing = !playing;
})
} );
request.send( null );
}
});
编辑:我已经从动态 URL(在我的 JSON 文件中)播放声音,但我似乎无法正确获取事件侦听器功能(用于在单击时播放/暂停)。
sceneEl.querySelector('a-sound').setAttribute('sound', {src:url3});
let audioEl = document.querySelector("a-sound");
let audio = audioEl.components.sound;
sceneEl.querySelector('a-box').addEventListener('click', function () {
if(!playing) {
audio.play();
} else {
audio.pause();
audio.currentTime = 0;
}
playing = !playing;
});
} );
request.send( null );
}
});
原文:我正在使用this https://stackoverflow.com/questions/47921013/play-sound-on-click-in-a-frameA-Frame 中的组件,但我希望从(“a-sound”)实体中的 src 播放声音,而不是从资源链接播放声音。原因是因为我从 JSON 数组动态加载声音文件,因此它们不存在于任何资产列表中。我已经加载了所有文件,但无法将此组件挂接到我加载的文件中sceneEl.querySelector('a-sound').setAttribute('sound', {src:url3});
代码。我认为这只是一个小语法问题,但我不能 100% 确定。有人可以看一下这个并告诉我它是否可行吗?这是代码(与链接相同,除了 querySelector 中的(a-sound))。
AFRAME.registerComponent('audiohandler', {
init:function() {
let playing = false;
let audio = document.querySelector('a-sound');
this.el.addEventListener('click', () => {
if(!playing) {
audio.play();
} else {
audio.pause();
audio.currentTime = 0;
}
playing = !playing;
});
}
})
</script>