Flex4 addElement()和addChil…

原文: http://blog.csdn.net/yinweilaibuji/article/details/7696588

 

            addElement()和addChild()的區別。

一,addChild() 和addElement()區別。因爲我也是剛從Flex3轉過來的。所以對這兩個相當的不清楚。

 

addChild(displayObject :DisplayObject) 加在這裏的child必須是DisplayObject的子類。

addElement(element :IVisualElement) 加在這裏的child必須是實現IVisualElement接口的類。

 

Flex 3的組件繼承關係

  Object>EventDispather>DisplayObject>InteractiveObject>DisplayObjectContainaer>Sprite>UIComponent>All components

 

其中public class UIComponent extends FlexSprite
    implements IAutomationObject, IChildList, IConstraintClient,
    IDeferredInstantiationUIComponent, IFlexDisplayObject, IFlexModule,
    IInvalidating, ILayoutManagerClient, IPropertyChangeNotifier,
    IRepeaterClient, IStateClient, IAdvancedStyleClient, IToolTipManagerClient,
    IUIComponent, IValidatorListener, IVisualElement

 

UIComponent 實現IVisualElement藉口

Flex 4的組件繼承關係Object>EventDispather>DisplayObject>InteractiveObject>DisplayObjectContainaer>Sprite>UIComponent>SkinnableComponent>SkinnableContainerBase>............

 

現在應該很清楚網上的一些說法是相當的錯誤。

addElement()即可以加載spark組件也可以加載halo組建。

addChild()如果是spark組件的addChild()這方法是被禁用的。會拋出一個error。所以在spark組件不可能用到此方法。用法只能是類同在Flex3的用法。

 

現在有個問題就是如果組件繼承sprite 而sprite是沒有實現IVisualElement接口的。

在Flex4一般採用此方法。

sprite>FlexSprite>SpriteVisualElement 而SpriteVisualElement是實現了IVisualElement接口的。

public class SpriteVisualElement extends FlexSprite
    implements IVisualElement, IMXMLObject, IFlexModule

 

所以一般採用SprieVisualElement來替代Flex3用的Sprite.

 

總之對於上面兩個方法。在Flex4中。永遠都只用addElement()方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章