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

标签 aframe

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

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

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

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

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

最佳答案

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

关于aframe - 我如何告诉组件等待所有元素的组件加载到 A-Frame 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678477/

相关文章:

three.js - Aframe:模型尺寸

javascript - Aframe.io : Add border to <a-curvedimage> on mouseover using

javascript - 错误 : Unable to decode audio data when playing sound onclick within A-frame Environment

aframe - 我可以自定义浏览器的默认弹出摄像头权限吗?

javascript - AR.JS 使盒子变平

javascript - A-Frame AR.js 标记模式不起作用

aframe - 如何在AFrame中的mouseenter中触发动画?

javascript - aframe - 如何强制最大/最小相机倾斜

javascript - A 框架 通过单击同一元素来播放和暂停声音

audio - A帧:单击时播放随机声音