プログラムのほとんどのデータをロードするxml構造があります。この場合、xml で指定されたクラスをインスタンス化します。クラスの名前をxmlに記述し、インスタンス化してパラメーターを渡すことができると考えました。それほど簡単ではないことが判明しました!
私はこのようなコードを試しました:
//special objects
for each (o in xml.Objects[0].special)
{
p.x = o.@x;
p.y = o.@y;
s.x = o.@width;
s.y = o.@height;
trace(o.@classname);
//var type:Class = o.@classname as Class;
var type:Class = getDefinitionByName(String(o.@classname)) as Class;
trace(type);
objectArray.push(new type(p, s));
trace("special");
}
ご覧のとおり、xml-file の classname 属性にクラスの名前があります。getDefinitionByName で定義を取得できました (少なくとも次のトレースでは正しいクラス名が表示されます) が、それをインスタンス化して配列にプッシュしようとすると、エラーの山が発生します。
エラー #2136: SWF ファイル file:///Users/tuomas/Dropbox/Flash/ScorpionBox/bin-debug/ScorpionBox.swf に無効なデータが含まれています。
どうすればいいですか?