我已经阅读了有关初始化和使用组件的初始化的信息。我也知道您可以在组件中指定依赖项。但是,如果我不知道哪些是依赖项,如果我想最后加载一个组件,因为它取决于其他元素属性,该怎么办?
例如,我目前正致力于处理多个网格名称的对撞机。现在,我见过的碰撞器(来自Dmarcos,Super-Hands)我看到他们用getObject3D(' mesh')读取它。我已经用threejs创建了一些自定义元素,并且我已经指定了不同的网格名称。我想要阅读由不同组件设置的所有网格,以便我的对撞机工作。
但为此,我需要等待所有组件的所有网格。当所有组件都已加载到实体中时,有没有办法让我知道?
我现在有几种解决方案正在发生:
答案 0 :(得分:3)
另一种选择是,在第一次调用play()
方法时运行您的设置代码,而不是init()
。请注意,如果场景暂停和取消暂停,则可以再次调用play()
,因此可能会设置this.initialized = true
之类的标记并检查,以便您不进行两次设置。
答案 1 :(得分:2)
如何循环遍历实体的DOM属性,检查属性名称是否是一个组件,如果它是一个componentinitialized
事件的组件,如果它没有加载,则等待它?
for (var i = 0; i < yourEntityEl.attributes.length; i++) {
if (yourEntityEl.attributes[i].key in AFRAME.components) {
// Wait for all to load (e.g., count them up and increment a counter or Promise.all).
}
}