编辑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”代码?我确定这是一个非常常见的问题,所以如果已经问了很多话,我很抱歉。
答案 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 {
...
}
}