我将元素(门)附加到Vive(蓝色框)控制器的元素上。
添加后,我想用代码“ this.el.object3D.position.set(0,0,0)”将门的位置设置为“ 0 0 0”,以将门连接到蓝色框。 / p>
但是,如果浏览器的调试器中没有断点,那将无法正常工作。
设置断点并通过断点时,结果是正确的。
带小故障的演示代码:https://glitch.com/edit/#!/join/aedfdc5a-698b-4e6c-96c3-4dddfce0a6eb
也许有人知道原因吗?
感谢您的帮助。
答案 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进行检查。