Aframe 如何在框架中动态地在.tick()处理程序中插入函数?

Aframe 如何在框架中动态地在.tick()处理程序中插入函数?,aframe,Aframe,我想使用js删除框架中.tick处理程序中的一段代码 这就是我所拥有的: 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: functi

我想使用js删除框架中.tick处理程序中的一段代码

这就是我所拥有的:

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动态地添加或删除这段代码。

或使用检查适当条件的if语句来检查您的逻辑:

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

您可以在代码中的任何位置设置这些条件:组件本地或全局变量、组件属性…

谢谢!我使用的条件语句如下:

 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;

我认为您误解了模式和更新的要点,但是您的逻辑非常接近

我将把条件添加到模式中,以便您可以在组件中的任何位置使用它,也可以使用框架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(“条件”:“真”/“假”)

干得好!另一个想法是添加条件作为避免全局变量的一部分:
schema:{enabled:{default:false}
并且可以执行
el.setAttribute('foo',{enabled:false})