FlexアプリケーションのaddChild()

3007 ワード

変換元:http://www.cnblogs.com/jiahuafu/archive/2009/03/20/1417679.html
Flexアプリケーションでは、直接addChildでSprite、MovieClipなどを追加することはできません.displayバッグの中のクラスです.たとえば、次のコードが間違っています.

  
    
private function init(): void
{
var sp:Sprite
= new Sprite();
addChild(sp);
}

 
TypeError:Error#1034:強制変換タイプ失敗:flashを使用できません.display::Sprite@156b7b1mxに変換する.core.IUIComponent.
これは、ApplicationのaddChildメソッドがDisplayObjectContainerから完全に継承されていないためです.
Application→LayoutContainer→Container→UIComponent→FlexSprite→Sprite→DisplayObjectContainer
Containerで書き換えられました
public override function addChild(child:DisplayObject):DisplayObject 
public override function addChild(child:DisplayObject):DisplayObjectパラメータchildのタイプはDisplayObjectですが、IUIcomponentインタフェース(すべてのFlexコンポーネントがこのインタフェースを実装している)を実装する必要があります.
ApplicationにSpriteを追加する場合は、まずそれをUIcomponentに入れてから、このUIcomponentを追加します.


コード#コード#

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

}