Aframe 如何让组件等待所有元素';A型架中要加载的组件?

Aframe 如何让组件等待所有元素';A型架中要加载的组件?,aframe,Aframe,我已经阅读了有关初始化和使用组件的init的内容。我还知道您可以在组件中指定依赖项。但是如果我不知道哪些是依赖项,如果我希望最后加载一个组件,因为它依赖于其他元素的属性,该怎么办 例如,我目前正在开发一个可以处理多个网格名称的碰撞器。现在,我看到的对撞机(来自Dmarcos,Super Hands)我看到它们使用getObject3D(“网格”)读取它。我用threejs创建了一些自定义元素,并指定了不同的网格名称。我想读取由不同组件设置的所有网格,以便碰撞器工作 但为此,我需要等待所有组件的所

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

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

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

我现在有几个解决方案:

  • 手动添加我正在编写的组件的依赖项。这将暂时解决问题,但我无法将组件发布到GitHub
  • 手动连接到每个组件,我有一个事件监听器,它将在加载和设置后启动
  • 编写一个将用作加载机制的组件。为此,我认为我需要向所有组件注入某种代码(可能使用prototype?),以便触发一个ready事件
  • 轮询机制。我会克制碰撞器加载一秒钟,或者一直轮询直到它找到网格(可能会有问题,因为它是以异步方式工作的)

  • 在实体的DOM属性上循环,检查属性名称是否为组件,如果它是未加载的组件,则等待它是否为带有
    componentialized
    事件的组件,如何

    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).
      }
    }
    
    for(var i=0;i
    在实体的DOM属性上循环,检查属性名称是否为组件,如果它是未加载的组件,则等待它是否为带有
    组件初始化事件的组件,怎么样

    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).
      }
    }
    
    for(var i=0;i
    另一个选项是,在第一次调用
    play()
    方法时运行设置代码,而不是
    init()
    。请注意,如果场景暂停且未暂停,则可能会再次调用
    play()
    ,因此可能会设置一个类似
    this.initialized=true
    的标志,并进行检查,这样您就不会执行两次设置。

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

    我不得不说,数字4非常粗糙(window.setTimeout持续4秒),但它仍在工作。我对其他选择持开放态度。我不得不说,数字4是超级黑客(window.setTimeout为4秒),但它工作正常。我有其他选择。亲爱的,我还有一个问题。组件中是否有属性告诉我是否已初始化?因为如果我所依赖的组件已经初始化,那么eventListener('componentinitialized')可能永远不会被触发。
    el.components.foo.initialized
    Awesome!!非常感谢!我知道这是旧的。我尝试使用.key,但返回未定义。使用.localName就可以了。亲爱的,我还有一个问题。组件中是否有属性告诉我是否已初始化?因为如果我所依赖的组件已经初始化,那么eventListener('componentinitialized')可能永远不会被触发。
    el.components.foo.initialized
    Awesome!!非常感谢!我知道这是旧的。我尝试使用.key,但返回未定义。使用.localName就可以做到这一点。