export class ColliderComponent {
constructor() {
this.observer = this.mutationObserver();
this.aframe();
}
//Registers the AFRAME component.
aframe(){
const __this = this;
AFRAME.registerComponent('collider', {
schema: {
},
init: function() {
console.log("The element to be observed is:",this.el);
__this.observer.observe(this.el, {characterData:true, subtree:true, attributes: true, attributeFilter: ['position'], childList : true});
},
tick : function(){
console.log(this.el.getObject3D('mesh').position);
}
});
}
private tick(){
}
private mutationObserver() : MutationObserver{
return new MutationObserver(mutations => {
mutations.forEach(mutation => {
console.log("Changed position");
});
});
}
}
我正在創建一個簡單的碰撞器。我將跟蹤具有「collider」組件的元素,並使用intersectsBox
來檢查它們是否相交。不幸的是,我似乎無法讓MutationObserver工作。我寧願使用這種方法而不是滴答聲,因爲它會在每幀中開始執行,而不是在元素移動時執行。是否可以使用具有三個js元素的突變觀察者 - A-Frame?
有什麼建議嗎?
我也試着用getObject3D('mesh')檢查位置。但是,當我使用A-Frame的動畫組件時,這不會觸發任何事情。 –