从 three.js object3D 访问 A-Frame 元素
Access A-Frame element from three.js object3D
在 A-Frame 中,您可以使用 .object3D
或 .getObject3D()
访问实体的 object3D,当您使用 three.js 对象时,是否有相反的方法,获取对象所属的元素?也许将父元素添加到 userdata
?
A-Frame 将实体附加到 object3D
作为 .el
。
例如带有网格的实体:
document.querySelector('a-entity').getObject3D('mesh').el;
它也附加到组 object3D
:
document.querySelector('a-entity').object3D.el;
这是在 setObject3D()
期间完成的。
对于object3D
个A-Frame不直接管理,没有直接关联的A-Frame实体,那么我们可以沿着场景图往上走,找到与[=17=最接近的那个].
我写了一个小函数,它使用 traverseAncenstors 向上遍历,returns 如果有一个元素的话。
function getParentEl( o ){
let p;
o.traverseAncestors( function( a ){
if( p === undefined && a.el ){
p = a;
}
});
if( p ){
return p.el
}
return;
}
在 A-Frame 中,您可以使用 .object3D
或 .getObject3D()
访问实体的 object3D,当您使用 three.js 对象时,是否有相反的方法,获取对象所属的元素?也许将父元素添加到 userdata
?
A-Frame 将实体附加到 object3D
作为 .el
。
例如带有网格的实体:
document.querySelector('a-entity').getObject3D('mesh').el;
它也附加到组 object3D
:
document.querySelector('a-entity').object3D.el;
这是在 setObject3D()
期间完成的。
对于object3D
个A-Frame不直接管理,没有直接关联的A-Frame实体,那么我们可以沿着场景图往上走,找到与[=17=最接近的那个].
我写了一个小函数,它使用 traverseAncenstors 向上遍历,returns 如果有一个元素的话。
function getParentEl( o ){
let p;
o.traverseAncestors( function( a ){
if( p === undefined && a.el ){
p = a;
}
});
if( p ){
return p.el
}
return;
}