AFRAME:组件动态添加完成时的事件

AFRAME:组件动态添加完成时的事件,aframe,Aframe,我的用例如下所示: 在循环中,实体正在创建,组件正在设置。这是通过传递给函数的json对象实现的。我的问题是如何最好地获得一个事件,即整个实体集及其组件正在初始化。代码是这样的 var parent = document.querySelector('#parent'); var ent = document.createElement('a-entity'); parent.appendChild(ent); for(var i =0; i = components.length; i++)

我的用例如下所示:

在循环中,实体正在创建,组件正在设置。这是通过传递给函数的json对象实现的。我的问题是如何最好地获得一个事件,即整个实体集及其组件正在初始化。代码是这样的

var parent = document.querySelector('#parent');
var ent = document.createElement('a-entity');
parent.appendChild(ent);
for(var i =0; i = components.length; i++) {
   var arr = components[i];
   var cl = arr[0]; // class name
   var attr = arr[2]; // component name
   var attrV = arr[3]; // component data
   ent.setAttribute('class', cl);
   AFRAME.utils.entity.setComponentProperty(ent, attr, attrV);
   //ent.setAttribute(attr, attrV); tried with this too
}
console.log('loop completed')
完成的循环在某些组件加载完成之前被记录。我想打个电话回去,知道所有的组件都已完成加载

似乎有一个事件
组件初始化
,但它只发送一个组件的返回。我真正的需求(没有反映在上面的代码中)是一个实体可以添加多个组件

要使用上述方法,我可能必须为每个组件设置此事件,并跟踪它是否已完成。只是想知道是否有更优雅的方式来做。感谢

实体发出“已加载”事件。它应该比侦听实体中的每个组件初始化更容易

试用:

entity.addEventListener("loaded", (e) => {
  console.log(e)
})

就像我做的一样。

只是为了添加,使用组件化的
似乎更复杂,因为框架也会自动添加位置和旋转等实体。当前的解决方案是在回调之前提供一个超时。显然,我们对此并不满意。您还可以创建父对象,动态地将子对象附加到场景中,然后再将父对象附加到场景中。当父级发出“loaded”时,所有子级也将加载