9

そのクラスを使用するために、swfをflex4アプリケーションにロードしたいと思います。

var ldr:Loader=new Loader();
ldr.load(new URLRequest("file://path/to/fileswf"));
ldr.contentLoaderInfo.addEventListener(Event.INIT, loaded);
function loaded(evt:Event):void { addChild(ldr); }

エラーが発生しました:

エラー:addChild()はこのクラスでは使用できません。代わりに、addElement()を使用するか、スキンがある場合はそれを変更してください。
Spark.components.supportClasses :: SkinnableComponent / addChild()[E:\ dev \ gumbo_beta2 \ frameworks \ projects \ spark \ src \ spark \ components \ supportClasses \ SkinnableComponent.as:966]
at main / private:init / loaded( )[C:\ Documents and Settings \ ufk \ Adob​​e Flash Builder Beta 2 \ xpogames-toolkit-test \ src \ main.mxml:22]

に変更addChild()するとaddElement()、次のコンパイルエラーが発生します。

1067:タイプflash.display:Loaderの値の無関係なタイプmx.core:IVisualElementへの暗黙の強制。main.mxmlパス/ディレクトリ22行目フレックス問題

この問題を解決する方法はありますか?

4

4 に答える 4

24

displayObjectを配置する別のコンテナを作成します。

// container ( IVisualElement ) for DisplayObjects
var container:UIComponent = new UIComponent();
addElement( container );

// displayObject goes to container
var displayO:Sprite = new Sprite();
container.addChild( displayO );
于 2010-06-08T09:26:05.840 に答える
2

Flash Builder 4のフルバージョンでは、this.rawChildrenはありません。

この問題を解決するための最良のアプローチは、必要な各クラスをフレックスコンポーネントに変換し、それをフレックスアプリケーションで使用することです。

  1. フレックスコンポーネントキットをダウンロードしてインストールします http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins

  2. ムービークリップを作成する

  3. フレックスコンポーネントに変換

  4. このクラスに関連する関数を追加します

フレックスコンポーネントに変換されようとしているムービークリップにアタッチされているクラスのスケルトン:

package {
import mx.flash.UIMovieClip;
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;
public dynamic class challenge_screen extends UIMovieClip {

    public function challenge_screen() {
        super();
    }
}
} 
于 2010-05-31T14:05:51.310 に答える
1
private var _loader:SWFLoader = new SWFLoader();
private var _uicomponent:UIComponent = new UIComponent();
private function swfLoaded(event:Event):void 
{
Alert.show("inside swf Loaded");
var content:DisplayObject =_loader.content;
_uicomponent.addChild(content);
} 
public function loadSWF () : void 
{   

_loader.addEventListener(Event.INIT, swfLoaded);
_loader.load("http://intelliveysoft.com:5080/myelearn/Admin.swf"); 
addElement(_uicomponent);
}

これを試して。それが動作します

于 2010-12-07T07:17:58.973 に答える
0

this.rawChildren.addChild(ldr)は機能するはずです

于 2010-01-26T05:25:58.460 に答える