星期四, 2月 04, 2010

add MovieClip by addChild in Flex4

為什麼Flex內不能直接用addChild呢?
mybeky's blog -
Flex Application裡的addChild()
節錄一些句子:

在Flex Application裡,是不能直接用addChild添加Sprite,MovieClip等來自flash.display包裡的類的。譬如以下代碼就會報錯:
private function init():void { var sp:Sprite = new Sprite(); addChild(sp);}
這是因為Application的addChild方法並非完全繼承自DisplayObjectContainer,而是在Container那裡被重寫了,雖然參數child的類型是DisplayObject,但是它必須實現IUIComponent接口(所有Flex組件都實現了這一接口),才能添加。


這是該網站提供的解決方法:

import mx.core.UIComponent;
private function init():void {
    var sp:Sprite = new Sprite();
    var uc:UIComponent = new UIComponent();
    uc.addChild(sp);
    addChild(uc);
}


不過在Flex4內有提供了一個專門放Sprite的Class:SpriteVisualElement



<s:spritevisualelement id="SV" />
然後在Script標籤內直接用
SV.addChild(MovieClip); 就可以了



延伸閱讀
9RIA.com天地會 - flash buider 4加入flash9 的元件的方法

沒有留言:

張貼留言