在aframe中的事件期间禁用所有触发器

时间:2017-10-23 22:04:09

标签: javascript-events triggers aframe

我的场景中有一堆触发器,我需要在播放音频文件时禁用它。

因此音频文件是打开场景时首先播放的内容。在此期间,我希望禁用所有触发器,以便用户在音频时间内无法与它们进行交互。

有没有办法禁用所有这些? 谢谢!

2 个答案:

答案 0 :(得分:1)

A-Frame主构建具有raycaster.enabled属性。所以你可以暂时setAttribute('raycaster', 'enabled', false)

https://github.com/aframevr/aframe/commit/3ea1b0c32070975b6a8cf5e59d345ac789b930fe

如果组件正确实现了该处理程序,您也可以在组件上运行.pause()。如果要在vive-control上禁用触发器,例如:

controllerEl.components['vive-controls'].pause();

答案 1 :(得分:0)

按触发器您是指具有事件侦听器的实体?
如果是这样,他们有"暂停()"实施,像ngoKevin建议here

如果没有,想法是

  • play()方法添加事件侦听器
  • pause()删除事件侦听器。

<小时/> 拥有这些,唯一剩下的就是组织。要么将所有的触发器保留在父实体中,并且当你的声音正在播放时只是像这样遍历子节点:

document.querySelector("#TriggerParent").children.forEach( (el) => {
   el.pause();
}

或者您可以通过任何常见属性抓取它们,例如querySelector([triggerComponent]);

<小时/> 我猜你可以手动完成所有这些操作。访问每个触发器,但采用动态方式启用/禁用所有触发器似乎是一种更好的概念。