在Flex中使用addChild來加入Sprite、MovieClip等flash.display類別物件須經過處理
直接使用時會回傳強制轉換型別失敗
這是因為Application的 addChild() 並非完全繼承自DisplayObjectContainer
Application→LayoutContainer→Container→UIComponent→FlexSprite→Sprite
→DisplayObjectContainer
而 addChild() 在Container那裡被覆寫了︰
public override function addChild(child:DisplayObject):DisplayObject
雖然參數child的類型是DisplayObject
但它必須實作IUIComponent介面後才能加入,就如同其他所有Flex元件都必須實作這個介面
如果要在Application裡添加Sprite,可以先把它裝進UIComponent裡
或者用UIMOVIECLIP,然後再添加這個UIComponent︰
import mx.core.UIComponent;
private function init():void {
var sp:Sprite = new Sprite();
var uc:UIComponent = new UIComponent();
uc.addChild(sp);
addChild(uc);
}
沒有留言:
張貼留言