Dynamicなクラスを定義し、そのpropertyもDyanmicに複数設定したい
例えば、Dynamic Loaderを定義して、Loaderに自由にプロパティーを定義できるようになりますが、その際に、あらかじめプロパティー名をコードに書いておくのではなくて、例えばXMLで得た情報をもとに、Dynamic LoaderにDynamicにプロパティー名を定義し、そこに値を入れたい場合に問題になります。
そこで、ObjectとDictionaryの関係のDictionaryのように、Stringをもとにプロパティーを定義する方法。
下記のようにあるkey stringをもとに、Key Objectを返すクラスを作成。
package {
public class ObjectUtil{
public static function getKeyObj(keyStr:String):Object{
var keyObj:Object = new Object();
keyObj.toString = function():String { return keyStr;};
return keyObj;
}
}
}
private function init():void{
var dLoader:DynamicLoader = new DynamicLoader();
var propName:String = "hogeUrl";//ここはXML等から取得してもいい。
var keyObj:Object = ObjectUtil.getKeyObj(propName);
dLoader[keyObj] = "http://hoge.com";
trace("property:",dLoader.hogeUrl);
}