Я пытаюсь воспроизвести источник звука при обнаружении маркера с помощью библиотек 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.info("playing");
} else {
entity.components.sound.pauseSound();
console.info("not playing");
}
Однако это не работает. Есть идеи, почему это не работает или не работает? Я даже не вижу журнала консоли, значит, он тоже не запускается.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы зарегистрировали компонент, который обрабатывает звук при каждом тике?
<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>
Благодарность! Я пытался зарегистрировать компонент, но, должно быть, неправильно написал свой код, поскольку он не выполнялся, не говоря уже о создании журнала консоли. Возможно, это было с тех пор, как я попытался написать это в голове, а не в конце тега тела. Это сработало отлично.