4

実行時に、インスタンス化するクラスの名前を含む文字列があります。どうすればいいですか?

使用する提案を読みましたflash.utils.getDefinitionByName()

var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();

ただし、次のエラーが発生します。

[障害]例外、information = ReferenceError:エラー#1065:変数classNameが定義されていません。

4

2 に答える 2

6

私が思いついた最も簡単な方法は、プロジェクトのどこにでも、セミコロンで区切ってクラス名を書き出すことです。

たとえば、これを含むAssets.asファイルを作成します。

package {   

public class Assets {       

    // To avoid errors from the compiler when calling getDefinitionByName
    // just list all of the classes that are not otherwise referenced in code:
    Balloon;
    Cloud;
    FlyingHorse;
    FlyingPig;
    UFO;
    Zeppelin;       
}
}

これに関する完全なコード例/チュートリアルはここにあります:http://producerism.com/blog/flashpunk-dame-and-lua-tutorial-part-6/

于 2011-08-04T00:02:10.487 に答える
1

もう1つのオプションは、次のようにmxmlc-includesコンパイラ引数を使用することです。

-includes=com.mydomain.package.MyClass

http://blogs.adobe.com/cantrell/archives/2010/09/loading-classes-dynamically-in-actionscript-3.html

于 2014-10-30T16:41:24.680 に答える