Есть ли какое-либо решение по поводу повторного воспитания в A-Frame без cloneNode ()? - PullRequest
0 голосов
/ 13 мая 2019

На сцене A-Frame я хочу изменить родителя сущности (a-box).

Так что я делаю removeChild () и appendChild ().

Но эта работа не работала какмое предназначение.

Казалось, что Object3D был потерян, когда было выполнено removeChild ().(поле исчезло!)

Есть ли способ изменить родительский элемент без 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 голосов
/ 20 мая 2019

Мы надеемся, что перемещение узла DOM работает, но оно не полностью протестировано. Может быть просто проблема. Вы также можете просто переместить объект three.js object3D, который намного быстрее.

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