Aframe 我是否需要在暂停时删除EventListener并在播放时添加EventListener?

Aframe 我是否需要在暂停时删除EventListener并在播放时添加EventListener?,aframe,Aframe,我看了这篇文章,但没有回答我的问题 我听说,最好的做法是在暂停时删除EventListener,在播放时添加EventListener,以便在使用A-Frame inspector时保持一致(与其他组件)单击功能。因此,您的代码如下所示: AFRAME.registerComponent('my-component', { init: function() { this.doSomething = function() { console.log("I'm doing i

我看了这篇文章,但没有回答我的问题

我听说,最好的做法是在暂停时
删除EventListener
,在播放时
添加EventListener
,以便在使用A-Frame inspector时保持一致(与其他组件)
单击
功能。因此,您的代码如下所示:

AFRAME.registerComponent('my-component', {
  init: function() {
    this.doSomething = function() {
      console.log("I'm doing it")
    }
  },
  play: function() {
    this.el.addEventListener('click', this.doSomething)
  },
  pause: function() {
    this.el.removeEventListener('click', this.doSomething)
  }
})
在我看来,如果A-Frame检查器需要这样做才能正常工作,那么它应该为我处理这个问题,而不是让我为我添加的每个事件侦听器都这样做。这种说法有什么道理吗


除了A-Frame Inspector方面之外,是否存在这样的情况:当场景部分初始化或部分销毁时,事件处理程序中运行的代码可能导致难以诊断错误?

重要的部分是:

  • 从场景中移除或分离实体后,事件侦听器将被清除。删除实体时,不仅调用
    .remove
    处理程序,而且调用
    .pause
    处理程序

  • 是的,因此当检查器打开时,事件侦听器不会运行。在应用程序的上下文中,这可能不那么重要,但如果您共享一个通用组件,人们可能会在其中使用Inspector来查看,那么实现它会很有用


  • 在任何情况下,如果要添加事件侦听器,最好使用
    .play
    .pause
    。它不会造成伤害,并确保在任何情况下都能干净地运行。

    重要的一点是:

  • 从场景中移除或分离实体后,事件侦听器将被清除。删除实体时,不仅调用
    .remove
    处理程序,而且调用
    .pause
    处理程序

  • 是的,因此当检查器打开时,事件侦听器不会运行。在应用程序的上下文中,这可能不那么重要,但如果您共享一个通用组件,人们可能会在其中使用Inspector来查看,那么实现它会很有用

  • 在任何情况下,如果要添加事件侦听器,最好使用
    .play
    .pause
    。它不会造成伤害,并确保在任何情况下都能干净地运行