从if / else重新启动整个A-Frame组件

时间:2018-01-09 11:21:30

标签: javascript aframe

编辑2:结果你可以指定刻度函数的持续时间,因此它可以作为定时刷新(非常有用)。该数字以毫秒为单位,这个'tick'替换了组件注册开始时的'init'。

tick: function () {
    this.tick = AFRAME.utils.throttleTick(this.tick, 8000, this);

编辑:感谢Piotr,setAttribute(“world”,“”)调用确实有效。在我的情况下,我使用了.setAttribute('truefalse', '')(truefalse是我注册组件的名称)。不幸的是,它仅适用于单个循环。我不确定每次满足条件时都可以重新更新。

ORIGINAL:我的A-Frame中有一个Javascript组件,当满足'if / else'条件时,我想在里面刷新很多代码。我已经运行了所有内容,但无法弄清楚如何使用else {声明重新启动初始 AFRAME.registerComponent('world', { init: function () {

我应该使用update: function () {或类似的东西,还是必须使用某种“for loop”代码?我确定这是一个非常常见的问题,所以如果已经问了很多话,我很抱歉。

1 个答案:

答案 0 :(得分:0)

AFRAME.registerComponent("world", {
  init: function() {
    /*here you do what you want to be done once, 
    for example add event listeners */
  },
  update: function() {
    /* this function will run every time components will receive new data */ 
  }, 
  tick: function() {
    /* this function will run on every frame.
       Be frugal with creating objects here -
       too much objects will result in poor performance */

  },
  myCustomFunction: function() {
  }
});

如果myCustomFunction是您希望在每个tick上执行的操作,请使用:

tick: function() {
  this.myCustomFunction();
}

如果myCustomFunction是每次组件接收新数据时要执行的操作,请使用:

update: function() {
  this.myCustomFunction();
}

阅读评论后更新:

tick: function() {
  if(.....) {
    ...
    this.update();
  } else {
    ...
  }
}