在没有cloneNode()的情况下,关于在A-Frame上重新生成父级有什么解决方案吗?

时间:2019-05-13 01:11:40

标签: aframe

在A-Frame场景中,我想要更改实体的父项。

所以我正在执行removeChild()和appendChild()。

但是这项工作没有达到我的预期。

完成removeChild()后,似乎丢失了Object3D。 (盒子消失了!)

是否可以在没有cloneNode()的情况下更改父级?

我想移动原始盒子,而不是盒子的副本。

A-Frame版本为0.9.1

<a-scene>
   <a-sphere position="0 1.25 -1" radius="1.25" color="#EF2D5E"></a-sphere>
   <a-box position="-1 0.5 1" rotation="0 45 0" width="1" height="1" depth="1" color="#4CC3D9"></a-box>
   <a-cylinder position="1 0.75 1" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>
   <a-plane rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>

   <a-sky color="#ECECEC"></a-sky>
   <a-entity position="0 0 3.8">
     <a-camera></a-camera>
   </a-entity>
</a-scene>

<script>
   // this code doesn't work as my intended
   var plane = document.querySelector('a-plane');
   var box = document.querySelector('a-box');
   box.parentEl.removeChild(box);
   plane.appendChild(box);

   // is this the only way?
   // var plane = document.querySelector('a-plane');
   // var box = document.querySelector('a-box');
   // var copyBox = box.cloneNode(true);
   // box.parentEl.removeChild(box);
   // plane.appendChild(copyBox);
</script>

1 个答案:

答案 0 :(得分:0)

我们希望可以移动DOM节点,但是尚未经过全面测试。可能只是一个问题。您也可以只移动three.js object3D,这要快得多。

const obj = el.object3D;
anotherEl.object3D.add(obj);