2017-10-30 2 views
1

Ich kann "Klick" -Ereignis nicht in meinem GFTF-Modell in A-Frame erfassen. Hier ist der Code. A-Frame-Dokumentation zeigt nur zwei Ereignisse werden unterstützt. Nämlich "model-loaded" und "model-error". Wie unterstützen wir andere Veranstaltungen wie "Click" und "Mouseenter"?gltf DOM-Ereignisse in A-Frame

AFRAME.registerComponent('material-displacement', { 
    /** 

    */ 
    init: function() { 
    this.material = new THREE.MeshStandardMaterial({color: "green"}); 
    this.el.addEventListener('model-loaded',() => { this.update(); }); 
    }, 

    /** 
    * Apply the material to the current entity. 
    */ 
    update: function() { 
    const mesh = this.el.getObject3D('mesh'); 
    if (mesh) { 
     mesh.traverse((node) => { 
     if (node.isMesh) node.material = this.material; 
     }); 
    } 
    }, 

}); 
+0

Click-Ereignisse ausgelöst werden durch den [Cursor] (https://aframe.io/docs/0.7.0/components/ cursor.html), nicht das Modell selbst, aber sie gelten trotzdem unabhängig vom Modellformat. –

+0

@DonMcCurdy Was bedeutet, dass ich die Cursor-Listener-Komponente registrieren muss, und das würde die Mausklick und andere Mausereignisse behandeln? – Niraj

+0

Solange Sie eine 'Cursor'-Komponente korrekt eingerichtet haben, werden die Ereignisse ausgelöst. Dann können Sie den Cursor-Listener verwenden, um mit diesen Ereignissen umzugehen, oder [Animationen ohne zusätzliche Komponenten auslösen] (https://aframe.io/docs/0.7.0/components/cursor.html#adding-visual-feedback). –

Antwort

0

Sie implementieren sie, genau wie Sie denken, dass Sie tun. Anstatt dass der Event-Listener ein modellgeladenes Event abhört, hören Sie ein click- oder mouseenter-Event.

So diese Zeile ändern

this.el.addEventListener('model-loaded',() => { this.update(); }); 

zu dieser Linie

this.el.addEventListener('click',() => { this.update(); }); 
+0

Ja, ich habe genau das versucht. Hat nicht funktioniert – Niraj