1 回答

TA贡献1772条经验 获得超8个赞
在玩这个最小的例子时,我想我找到了我的问题的答案。该示例的问题在于,在将子对象附加到DOM之前,已将 base 插入到 DOM 中。这样,“加载”事件就有可能在子项初始化完成之前被触发,显然 Chrome 就是这样做的。在 Firefox 中,似乎在子项初始化之前不会触发事件,至少在这种情况下是这样。
因此,该示例可以通过在将子对象附加到DOM后将其附加到DOM 来修复:
AFRAME.registerComponent('cubes', {
init: function () {
this.base = document.createElement('a-entity');
this.base.addEventListener('loaded', (e) => {
console.log("Base loaded, child object3DMap:", this.base.children[0].object3DMap);
});
let box = document.createElement('a-entity');
box.setAttribute('geometry', {primitive: 'box'});
this.base.appendChild(box);
this.el.appendChild(this.base);
}
});
抱歉打扰了,一旦您了解了附件的顺序,答案就很简单了。
添加回答
举报