Передать переменные между функциями в компоненте - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь остановить запуск функции throttledFunction, если не был прослушан прослушиватель событий «fly».Но я не могу изменить переменную this.ballhit из EventListener.

Я не знаю, как передавать переменные между функциями внутри компонента.

 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 голосов
/ 23 мая 2019

Следующие работы.Спасибо.Теперь функция газа будет работать только в течение ~ 10 000 миллисекунд после события «fly», а не в фоновом режиме.

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.
    },
});
0 голосов
/ 22 мая 2019

При создании функции this становится другим.

Вы можете использовать функцию самосвязывания el.addEventListener('fly', () => { // ... });

Или как var self = this; el.addEventListener('fly', function () { self.ballHit = true; });

...