Как вставить функцию в обработчик .tick () на лету в рамке? - PullRequest
0 голосов
/ 29 декабря 2018

Я хочу удалить часть кода внутри обработчика .tick в AFRAME, используя js.

Это то, что у меня есть:

AFRAME.registerComponent('foo', {
 schema: {},
 init: function () {},
 update: function () {},
 tick: function() {
        myObject.position.y += 0.009;//this is what I want to remove on the fly
 },
remove: function () {},
pause: function () {},
play: function () {}
});

Я ожидаю запуска добавления или удаленияэтого куска кода на лету, используя js.

Ответы [ 3 ]

0 голосов
/ 29 декабря 2018

Спасибо!Я использовал условное выражение так:

 AFRAME.registerComponent('foo', {
 schema: {},
 init: function () {
  condition = false;
    },
 update: function () {},
 tick: function() {
    if (condition == true) {
    myObject.position.y += 0.009;//this is what I want to remove on the fly
      }
 },
remove: function () {},
pause: function () {},
play: function () {}
});

Теперь я могу вызвать состояние с помощью:

    condition = false;
0 голосов
/ 30 декабря 2018

Я думаю, вы неправильно поняли смысл схемы и обновлений, но вы действительно очень близки со своей логикой.

Я бы добавил условие в схему, чтобы вы могли использовать его в любом месте вашего компонента.as используйте AFrame sugar для обновления с помощью setAttribute.

AFRAME.registerComponent('foo', {
  schema: {
    condition: {type: boolean, default:false}
  },
  init: function () {
    //possible once off initialization logic
  },
  update: function () {},
  tick: function() {
    if (this.data.codition) {
      myObject.position.y += 0.009;//this is what I want to remove on the fly
    }
  },
  remove: function () {},
  pause: function () {},
  play: function () {}
});

Затем на лету вы просто делаете

yourElementWithFooComponent.setAttribute ("condition": "true" / "false");

0 голосов
/ 29 декабря 2018

Сориентируйте вашу логику с помощью оператора if, который проверяет соответствующие условия:

tick: function() {
  if (conditions) {
     myObject.position.y += 0.009;
  }
}

Вы можете установить эти условия в любом месте вашего кода: локальная или глобальная переменная компонента, свойство компонента ...

...