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

Javascript 在帧中的事件期间禁用所有触发器,javascript,triggers,dom-events,aframe,Javascript,Triggers,Dom Events,Aframe,在播放音频文件时,我需要禁用场景中的一系列触发器 因此,音频文件是打开场景时播放的第一件事。在此期间,我希望禁用所有触发器,以便用户无法在音频时间与它们交互 有没有办法禁用所有这些功能?触发器指的是具有事件侦听器的实体? 如果是这样,他们是否像ngoKevin建议的那样实现了“pause()” 如果不是的话,我们的想法是 添加事件侦听器的方法 pause()删除事件侦听器 有了这些,唯一剩下的就是组织。或者将所有触发器保留在父实体中,当播放声音时,只需像下面这样迭代子实体: documen

在播放音频文件时,我需要禁用场景中的一系列触发器

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


有没有办法禁用所有这些功能?

触发器指的是具有事件侦听器的实体?
如果是这样,他们是否像ngoKevin建议的那样实现了“pause()”

如果不是的话,我们的想法是

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

有了这些,唯一剩下的就是组织。或者将所有触发器保留在父实体中,当播放声音时,只需像下面这样迭代子实体:

document.querySelector("#TriggerParent").children.forEach( (el) => {
   el.pause();
}
或者您可以通过任何公共属性获取它们,比如
querySelector([triggerComponent])


我想您可以通过访问每个触发器“手动”完成所有这些操作,但使用动态方式启用/禁用所有触发器似乎是一个更好的概念。

a-Frame主构建具有
raycaster.enabled
属性。因此,您可以暂时
setAttribute('raycaster','enabled',false)

如果组件正确地实现了该处理程序,您还可以在组件上运行
.pause()
。例如,如果要禁用vive控件上的triggerdown:

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

是的,我的错。。我所说的触发器是指事件侦听器和鼠标事件(不确定这些事件是否可以暂停)。我也在想,也许解决这个问题的更简单方法是在音频播放期间缩短光线投射器组件。
setAttribute('raycaster','enabled',false)
对我不起作用。相反,我使用了
setAttribute('raycaster',{far:'0'})
,这样raycaster很小,不会与任何东西相交