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
2
A
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
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;
}
Nicht alle Entitäten haben ein Mesh, aber Sie können immer 'document.querySelector ('a-entity'). Object3D.el' –