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