我从aframe文档中读到,每当我们更新位置或任何其他值时,附加组件的更新都会触发,我只是尝试在每次更改位置时触发更新。
这是组件: -
AFRAME.registerComponent('checking', {
init: function(){
console.log("initialized");
},
update: function(){
console.log("valueUpdated: "+this.el.id);
},
tick: function(){
}
});
在加载文档时,使用init激活了一次更新,但是当我从控制台执行此操作时,obj.setAttribute("position","4 6 7");
根据文件,它应该正确发生,或者我犯了一些非常基本的错误?
...谢谢
答案 0 :(得分:1)
我认为您将组件与实体混淆。实体是一个容器,其行为和外观是通过组件定义的。
因此更新函数在开始时+当您更改组件时触发,例如通过setAttribute('checking','newValue')。 />
包括'componentChanged'事件的监听器:
this.el.addEventListener('componentChanged',function(e){
if(e.detail.name==='position'){
console.log(e.detail.newData);
}
});
检查位置是否随刻度变化,但这似乎非常有用:
init(){
this.pos = this.el.getAttribute('position');
}
tick: function(){
if( this.el.getAttribute('position') != this.pos ){
this.pos = this.el.getAttribute('position');
}
}