如何在Aframe中即时在.tick()处理函数中插入函数?

时间:2018-12-29 05:41:02

标签: aframe

我想使用js在AFRAME中的.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即时触发添加或删除这段代码。

3 个答案:

答案 0 :(得分:1)

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

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

您可以在代码中的任何位置设置这些条件:组件局部或全局变量,组件属性...

答案 1 :(得分:0)

谢谢!我使用了这样的条件:

 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;

答案 2 :(得分:0)

我认为您误解了架构和更新的要点,但是您确实与逻辑很接近。

我将条件添加到架构中,以便您可以在组件中的任何位置使用它,并使用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”);