更新未在aframe组件中触发

时间:2017-07-07 07:24:50

标签: javascript aframe

我从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"); 根据文件,它应该正确发生,或者我犯了一些非常基本的错误?

...谢谢

1 个答案:

答案 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');
     }
   }