当显式调用 AFrame 组件的 remove() 时,无法读取 属性 'object3D' of undefined error

Cannot read property 'object3D' of undefined error, when remove() of AFrame component is explicitly called

我正在为 AFrame 编写自定义计时器组件。计时器是使用基本 three.js 通过将多个 three.js object3D 分组并最终使用

设置为实体 (el) 制作的
seconds = new THREE.Object3D();
parent1 = new THREE.Object3D();
seconds.add(parent1);
parent2 = new THREE.Object3D();
seconds.add(parent2);    
this.el.setObject3D('Mesh', seconds);

定时器工作正常。但是当我调用 remove() 时,包含以下代码。

this.el.removeObject3D('Mesh');

我收到错误 Uncaught TypeError: Cannot read 属性 'object3D' of undefined。 我记录了 el.object3D 并且类型是 "Group" 但秒数是 "Object3D".

我需要从场景中移除组件。我该怎么做才能解决这个问题? 请在故障 link 上找到组件的代码 谢谢。

两个选项:

使用DOM API删除实体:

var clock=document.getElementById("timer");
document.querySelector("a-scene").removeChild(clock);

已修改glitch

您还可以从实体中删除组件:

var clock=document.getElementById("timer");
clock.removeAttribute('timer-component');

glitch

remove 方法不是直接调用的,而是当实体的 component is detached 或实体从 DOM 中删除时自动调用的生命周期方法。