2016-07-25 6 views
2

Von A-Frame können Sie auf Objekt3D einer Entität mit .object3D oder .getObject3D() zugreifen, gibt es eine Möglichkeit, das Umgekehrte zu tun, wenn Sie mit three.js-Objekten arbeiten Zu welchem ​​Element gehört ein Objekt? Vielleicht fügen Sie das Elternelement zu userdata hinzu?Zugriff A-Frame-Element von three.js object3D

Antwort

4

A-Frame fügt die Entität an object3D als .el an.

Zum Beispiel mit einem Unternehmen mit einem Netz:

document.querySelector('a-entity').getObject3D('mesh').el; 

Es legt auch die Gruppe object3D:

document.querySelector('a-entity').object3D.el; 

Die während setObject3D() erfolgt.

Für object3D s, das A-Frame nicht direkt verwaltet und keine direkte assoziierte A-Frame-Entität besitzt, können wir den Szenengraph nach oben gehen, um den nächsten mit object3D.traverseAncestors zu finden.

+0

Nicht alle Entitäten haben ein Mesh, aber Sie können immer 'document.querySelector ('a-entity'). Object3D.el' –

0

Ich schrieb eine kleine Funktion, die mit traverseAncnstors nach oben geht und ein Element zurückgibt, wenn es eines gibt.

function getParentEl(o){ 
    let p; 
    o.traverseAncestors(function(a){ 
    if(p === undefined && a.el){ 
     p = a; 
    } 
    }); 
    if(p){ 
    return p.el 
    } 
    return; 
}