3

「クラス」に設定したライブラリ内のオブジェクトを含む FLA ファイルがあります (CS3 では、ライブラリ内のアイテムを右クリックしてプロパティを選択し、アクション スクリプト用にエクスポートするように設定されていることを確認し、クラス名を持っています)

この演習では、クラスを「MyClass」と呼びましょう

その FLA を SWC および SWF にパブリッシュすると、次のようになります。

SWC を静的にロードし、次のようにして "MyClass" をインスタンス化できます。

var inst:MyClass = new MyClasS();

さて、問題: ローダー オブジェクトを使用して SWF ファイルをロードすることにより、実行時にこれを実行できるようにしたいと考えています。

パブリッシュ前に FLA で手動で作成されたインスタンスにアクセスする方法は理解していますが、できるようにしたいのは、クラス「MyClass」の新しいインスタンスを作成することです。

swf ファイルを表す「MovieClip」を取得できます。それをディスプレイリストに追加できますが、そこに含まれるクラスを取得できないようです。(これが理にかなっていることを願っています)

これを攻撃する方法についての提案は大歓迎です。

編集:フォーマットコード

4

2 に答える 2

3

クリスチャンの答えを完成させるには:

var cls : Class = loader.contentLoaderInfo.applicationDomain.getDefinition("ClassName");

var instance : Object = new cls();

さらに、メイン アプリケーションでも定義されているインターフェイスをクラスが実装しない限り、厳密な型付けが行われない (つまり、Object として宣言する必要がある) ことに注意してください。その後、インスタンス変数をインターフェイスとして宣言し、コンパイル時にそのメンバーにアクセスできます。

于 2009-01-22T08:14:22.223 に答える
2

ここを見てください; Loader.contentLoaderInfo.applicationDomain.getDefinition( "MyClass")を使用して、クラス参照を抽出できるはずです。

于 2009-01-22T05:54:56.077 に答える