框架中的 Play() 资产与实体

Play() assets vs. entity in aframe

我可以 .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(),这些值将被忽略。

或许试试 el.components.sound.playSound()。否则,请尝试直接传递内联 URL,因为它会创建一个更灵活的音频缓冲区。