swf要放進flex(flash builder)中,基本上可以看成是一個class型態,所以當您要使用一個類別,首先就是要讓flex有一個這樣的類別
//宣告要匯進來的swf路徑
//宣告mySWF變數是一個Class型態
[Embed(source='heart.swf')]
private var mySWF:Class;
一旦有了類別後,要使用此類別,自然就是需要實例化此類別,也就是大家熟悉的new動作囉!
var myObj:Sprite=new mySWF();
要將此myObj顯示出來,寫慣flash的開發者,很自然就會使用this.addChild(myObj);
但是這樣的寫法,flex會回傳錯誤(傳回強制轉型失敗,無法將 xxxxxxxxx 轉換成 mx.core.IUIComponent)這樣的錯誤是因為Application並沒有完全繼承DisplayObjectContainer所至
(Application→LayoutContainer→Container→UIComponent→FlexSprite→Sprite→DisplayObjectContainer),過程中在Container已經被重寫,然而我們可以透過再包一層UIComponet來讓此物件顯示,步驟如下:
var uic:UIComponent=new UIComponent();
uic.addChild(myObj);
this.addChild(uic);
將上面所說的程式碼整理如下:
[Embed(source='heart.swf')]
private var mySWF:Class
private function ini():void
{
var uic:UIComponent=new UIComponent();
uic.addChild(myObj);
this.addChild(uic);
}
如果您覺得太麻煩,其實直接使用 this.rawChildren.addChild(myObj)亦可。
沒有留言:
張貼留言