Recent Entries
Archives
Search


Links
Powered by
Movable Type 2.661

2008年04月28日

ActionScript3,Dynamic class,Dynamic property [ActionScript]

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;

			}
	
	}
}

あとは使う側で下記のように、KeyObjectをもとに、値を設定できる。これで、例えば画像をロードして、そのLoaderをdictioinaryのように、実行時にKeyと値をがんがん設定できる。コードにあらかじめKeyを書いておく必要ない。
		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);
			
		}

Posted by takano at 2008年04月28日 08:53
Comments
Post a comment









Remember personal info?