Невозможно прочитать свойство 'object3D' с неопределенной ошибкой, когда remove () компонента AFrame явно вызывается - PullRequest
0 голосов
/ 21 декабря 2018

Я пишу пользовательский компонент таймера для AFrame.Таймер создается с использованием базовых Three.js путем группировки нескольких объектных 3D.js и, наконец, устанавливается на сущность (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: Невозможно прочитать свойство 'object3D' из неопределенного.Я зарегистрировал el.object3D, и тип был «Группа», но секундами было «Object3D».

Мне нужно удалить компонент со сцены.что я могу сделать, чтобы это исправить?Пожалуйста, найдите код для компонента на глюк ссылка Спасибо.

1 Ответ

0 голосов
/ 22 декабря 2018

Два варианта:

Используйте DOM API для удаления объекта:

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

Изменено глюк

Вы также можете удалить компонентот сущности:

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

глюк

Метод удаления не предназначен для непосредственного вызова, но метод жизненного цикла вызывается автоматически, когда компонент отсоединено от сущности или сущность удалена из DOM.

...