Воспроизведение аудио на маркере обнаружения A-кадра AR.JS - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь воспроизвести аудиоисточник при обнаружении маркера в библиотеках 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 Ответ

0 голосов
/ 26 апреля 2018

Зарегистрировали ли вы компонент, который обрабатывает звук на каждом тике?

<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>
...