如何告诉组件等待所有元素的组件加载到 A-Frame 中?

Jos*_*e A 2 aframe

我读过有关初始化和使用组件的 init 的内容。我还知道您可以指定组件中的依赖项。但是,如果我不知道哪些是依赖项,并且如果我希望最后加载一个组件,因为它依赖于其他元素的属性,该怎么办?

例如,我目前正在开发一个适用于多个网格名称的碰撞器。现在,我看到的碰撞器(来自 Dmarcos、Super-Hands)我看到它们使用 getObject3D('mesh') 读取它。我使用 Threejs 创建了一些自定义元素,并指定了不同的网格名称。我想读取由不同组件设置的所有网格,以便我的对撞机正常工作。

但为此,我需要等待所有组件的所有网格。有没有办法让我知道所有组件何时已加载到实体中?

我现在想到了几个解决方案:

  1. 手动添加我正在编写的组件的依赖项。这可以暂时解决问题,但我无法将组件发布到 GitHub。
  2. 手动连接到每个组件,我有一个事件侦听器,该事件侦听器将在加载和设置后触发。
  3. 编写一个用作加载机制的组件。为此,我认为我需要向所有组件注入某种代码(也许使用原型?),这样我就可以触发一个就绪事件。
  4. 轮询机制。我会阻止碰撞器加载一秒钟,或者继续轮询直到找到网格(可能会出现问题,因为它以异步方式工作)。

Don*_*rdy 7

另一种选择是,在第一次play()调用该方法时运行您的设置代码,而不是init(). 请注意,play()如果场景暂停和取消暂停,则可能会再次调用,因此可能会设置一个标志this.initialized = true并进行检查,这样您就不会进行两次设置。