Воспроизведение () активов и объектов в aframe

#javascript #audio #aframe #webvr

#javascript #Аудио #фрейм #webvr

Вопрос:

Я могу использовать активы .play(), но не объекты в следующей структуре:

  <a-scene>
    <a-assets>
        <audio id="assetNarration" src="snd/dt_narration_1.mp3" preload="auto" autoplay="false">
        <video id="video" src="video/Open_Sky.mp4" autoplay="false" loop></video>
    </a-assets>
        <a-sound id="entityNarration" src="#assetNarration" autoplay="false" position="0 5 0" volume="0.5"></a-sound>
        <a-videosphere id="v1" src="#video" autoplay="false" rotation="0 90 0"></a-videosphere>
 </a-scene>
  

Это позволяет мне запускать:

 var nar = document.querySelector('#assetNarration');
var vid = document.querySelector('#video');
nar.play();
vid.play();
  

.. но не

 var nar = document.querySelector('#entityNarration');
var vid = document.querySelector('#v1');
nar.play();
vid.play();
  

Основное отличие этого заключается в том, что я устанавливаю значения громкости и положения для объекта, которые игнорируются, если я запускаю .play() непосредственно на активе.

Комментарии:

1. Опечатка, я думаю, ассоциативное обозначение с двойным ss?

2. Спасибо @VuralAcar, но я перепечатал код здесь в SO для упрощения. Мой фактический код использует другие переменные. Но спасибо!

Ответ №1:

Возможно, попробуйте el.components.sound.playSound() . В противном случае попробуйте передать встроенный URL напрямую, поскольку он создает аудиобуфер, который является немного более гибким.

Комментарии:

1. Uncaught TypeError: nar.playSound is not a function Передача встроенного URL напрямую пропускает предварительную загрузку файла, правильно? Мой фактический код в значительной степени зависит от <a-assets>, чтобы предварительно загрузить все перед запуском остальной части кода. Кстати, я редактирую свой пост, чтобы показать это, но вопрос выходит за рамки просто аудио. Кажется, я не могу вызвать какие-либо действия с объектами … видео или звук.

2. Извините, обновлено для el.components.sound.playSound() . Вы можете попробовать использовать <a-asset-item src="youraudio.mp3"> для предварительной загрузки внутри three.js система.

3. безумный факт: если вы .play() актив, он будет воспроизводиться в стерео, если вы components.sound.playSound() объект, он будет воспроизводить моно.

4. Это позиционно отслеживаемый звук, поэтому он может воспроизводиться больше в одном ухе в зависимости от локального звука. Я не уверен, насколько точен позиционный звук прямо сейчас.

5. Да, я смог поиграть с позиционированием, но это другое. Буквально отключение звука слева и аудио справа. Если я перемещу позицию, будет разница в пространственных уровнях, но странно, что с a position="0 0 0" все это вправо.