Воспроизведение аудио на маркере обнаружения A-кадра AR.JS
Я пытаюсь воспроизвести источник звука при обнаружении маркера с помощью библиотек A-frame и AR.JS.
В настоящее время у меня есть следующая сцена, камера и маркер:
<a-scene embedded arjs='sourceType: webcam; debugUIEnabled: false;';>
<a-marker preset="hiro">
<a-box position='0 0.5 0' material='color: black;'></a-box>
</a-marker>
<a-assets>
<audio id="sound" src="audio.mp3" preload="auto"></audio>
</a-assets>
<a-entity sound="src: #sound" autoplay="false"></a-entity>
<a-entity camera></a-entity>
</a-scene>
Я изначально попробовал следующее:
var entity = document.querySelector('[sound]');
if(document.querySelector("a-marker").object3D.visible == true){
entity.components.sound.playSound();
console.log("playing");
} else {
entity.components.sound.pauseSound();
console.log("not playing");
}
Тем не менее, это не работает. Есть идеи, почему это не работает или не работает? Я даже не вижу консольный журнал, поэтому он тоже не запускается.
1 ответ
Решение
Вы зарегистрировали компонент, который обрабатывает звук на каждом тике?
<a-scene embedded arjs='sourceType: webcam; debugUIEnabled: false;';>
<a-assets>
<audio id="sound" src="audio.mp3" preload="auto"></audio>
</a-assets>
<a-marker preset="hiro">
<a-box position='0 0.5 0' material='color: black;' soundhandler>
</a-box>
</a-marker>
<a-entity sound="src: #sound" autoplay="false"></a-entity>
<a-entity camera></a-entity>
</a-scene>
<script>
AFRAME.registerComponent('soundhandler', {
tick: function () {
var entity = document.querySelector('[sound]');
if (document.querySelector('a-marker').object3D.visible == true) {
entity.components.sound.playSound();
} else {
entity.components.sound.pauseSound();
}
}
});
</script>