2016-10-08 7 views
0

Используя Mozilla's A-Frame для WebVR, я пытаюсь отредактировать y-позицию одного объекта с помощью javascript. Однако на веб-странице ничего не отображается, пока мой javascript не будет запущен. Почему это не одновременно?My A-Frame не отображается, пока работает моя функция Javascript. Как мне это сделать одновременно?

Это мой HTML-страница:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Hello, World! - A-Frame</title> 
    <meta name="description" content="Hello, World! - A-Frame"> 
    <meta name="apple-mobile-web-app-capable" content="yes"> 
    <script src="https://aframe.io/releases/0.3.0/aframe.min.js"></script> 
    </head> 
    <body> 
    <a-scene> 
     <a-assets> 
     <a-asset-item id="crate-obj" src="./aztec-temple.obj"></a-asset-item> 
     <a-asset-item id="crate-mtl" src="./aztec-temple.mtl"></a-asset-item> 
     </a-assets> 
     <a-obj-model src="#crate-obj" mtl="#crate-mtl"></a-obj-model> 
     <a-sphere id="comet" position="1, 5.25, -5" radius="1.25" color="#EF2D5E"></a-sphere> 
    </a-scene> 
    </body> 
    <script src="./main.js"></script> 
</html> 

и мой Javascript:

function initialCometSetup() { 
    var x = 0, y = 5.25, z = -5; 
    var myComet = document.getElementById('comet'); 
    myComet.setAttribute('position', {x: x, y: y, z: z}); 
    console.log(myComet); 
    setTimeout(100, changeZofComet()); 
} 

function changeZofComet() { 
    console.log("got here") 
    var myComet = document.getElementById('comet'); 
    var myPos = myComet.getAttribute('position'); 
    console.log(myPos.y) 
    myPos.y = myPos.y - 0.01; 
    myComet.setAttribute('position', myPos); 
    if (myPos.y > 0) { 
     setTimeout(1000, changeZofComet()); 
    } else { 
     console.log("schmuguwuga") 
    } 
} 

setTimeout(1000, initialCometSetup()); 

ответ

2

Вместо того, чтобы создать свой собственный цикл рендеринга вы должны создать компонент и использовать метод tick для вставки логики в цикл рендеринга aframe. https://aframe.io/docs/0.3.0/core/component.html#methods