2016-07-25 125 views
2

從A-Frame中,您可以通過.object3D.getObject3D()訪問實體的object3D,有沒有辦法在您使用three.js對象時獲得相反的結果對象所屬的元素?也許添加父元素到userdata訪問three.js object3D中的A-Frame元素

回答

4

A-Frame將實體附加到object3D作爲.el

例如與具有網狀的實體:

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

它還附加到組object3D

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

這期間setObject3D()完成。

對於object3D,如果A-Frame不直接管理並且沒有直接關聯的A-Frame實體,那麼我們可以沿着場景圖找到與object3D.traverseAncestors最接近的一個。

+0

不是所有的實體都有網格,但你總是可以做'document.querySelector('a-entity')。object3D.el' –

0

我寫了一個小函數,它使用traverseAncenstors向上遍歷並返回一個元素(如果有的話)。

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