如果调试器中没有断点,则this.el.object3D.position.set(0,0,0)不起作用

时间:2018-08-08 11:50:37

标签: javascript three.js aframe

我将元素(门)附加到Vive(蓝色框)控制器的元素上。

添加后,我想用代码“ this.el.object3D.position.set(0,0,0)”将门的位置设置为“ 0 0 0”,以将门连接到蓝色框。 / p>

但是,如果浏览器的调试器中没有断点,那将无法正常工作。

设置断点并通过断点时,结果是正确的。

带小故障的演示代码:https://glitch.com/edit/#!/join/aedfdc5a-698b-4e6c-96c3-4dddfce0a6eb

也许有人知道原因吗?

感谢您的帮助。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

当您尝试更改位置时,似乎没有完全完成子元素的追加。

您可以通过设置计时器来方便地对其进行检查,该计时器在append()之后并更改位置。


您可以使用MutationObserver,当有孩子时,它将触发一个事件。 然后,您可以进行更改:

var viveController, door
// Observer config -> what am i going to react upon
var observerOptions = {    
  childList: true,
}
// create the observer - it takes a callback as an argument
// no need to filter what event was caught, just move the damn door
var observer = new MutationObserver((e)=>{
     door.setAttribute("position", "0, 0, 0")
});

observer.observe(viveController, observerOptions);
viveController.appendChild(door)

通过here进行检查。