2010年7月5日 星期一

Flex使用addChild加入flash.display類別元件

在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);
}

沒有留言:

張貼留言