Aframe在组件中的函数之间传递变量

时间:2019-05-22 02:42:13

标签: javascript aframe

除非尝试发出“ fly”事件侦听器,否则我将尝试停止踩踏功能。但是我无法从事件监听器中更改“ this.ballhit”变量。

我不知道如何在组件内的函数之间传递变量。

 AFRAME.registerComponent('ballflyact', {
  init: function () {
     var el = this.el;
     this.ballhit = '';
      el.addEventListener('fly', function () {
        this.ballhit = true;
      });

  },

tick: function (t, dt) {
     if (!this.ballhit) {  return; }
    this.throttledFunction();  // Called once a second.
    },
});

2 个答案:

答案 0 :(得分:0)

创建函数时,this变得不同。

您可以使用自动绑定功能el.addEventListener('fly', () => { // ... });

或者像var self = this; el.addEventListener('fly', function () { self.ballHit = true; });

答案 1 :(得分:0)

以下作品。谢谢。现在,油门功能将在“飞行”事件发生后仅运行约10,000毫秒,而不会一直在后台运行。

AFRAME.registerComponent('ballflyact', {
  init: function () {
     var el = this.el;
     this.ballhit = '';
     var self = this;
      el.addEventListener('fly', function () {
        self.ballhit = true;
                       // more code
                       setTimeout((e)=>{
                       self.ballhit = '';
                      }, 10000)
      });
    },
tick: function (t, dt) {
     if (!this.ballhit) {  return; }
    this.throttledFunction();  // Called once a second.
    },
});