# Shadow元素
有時(shí)候我們需要用代碼動(dòng)態(tài)創(chuàng)建元素之后添加到場(chǎng)景中,這個(gè)需求和wxml寫標(biāo)簽這種靜態(tài)的模板編譯方式是沖突的,為了保證DOM樹不混亂,我們提供了類似于HTML中的ShadowRoot的XRShadow元素,對(duì)應(yīng)于xml中的xr-shadow標(biāo)簽,來(lái)解決這個(gè)問題。
# 一個(gè)例子
讓我們以一個(gè)例子來(lái)說(shuō)明如何使用Shadow元素,首先在xml中定義:
<xr-shadow id="shadow" position="0 1 0" />
之后便可以在代碼中使用:
const shadow = scene.getElementById('shadow');
const node = scene.createElement(xrFrameSystem.XRNode);
// 添加創(chuàng)建的節(jié)點(diǎn)到`shadow`節(jié)點(diǎn)下
shadow.addChild(node);
// 移除創(chuàng)建的節(jié)點(diǎn)
shadow.removeChild(node);
# 特別注意
在實(shí)際使用中我們有一些特別要注意的地方:
- Shadow元素派生自節(jié)點(diǎn)元素,擁有3D變換的能力。
- 在
wxml中,Shadow元素下絕對(duì)不能有子元素?。?!當(dāng)然如果這么做了框架會(huì)報(bào)錯(cuò)。 - 動(dòng)態(tài)創(chuàng)建的元素僅能添加為Shadow元素的子/孫元素,這個(gè)框架不會(huì)檢查,出了問題后果自負(fù)。
- Shadow元素以及子元素的
release需要自己處理,remove后能夠繼續(xù)復(fù)用重新add!