Labo
getDefinitionByNameでクラス名を文字列から作る
文字列からインスタンス名を作りたい時は「getChildByName」を使いますが、 クラス名を作る時は「getDefinitionByName」を使います。
サムネイル画像に使うような、比較的容量が小さめの画像を、最初からライブラリに登録しておいて、始めにロードしておきたいという場合など便利です。
例えば、ライブラリに読み込んだビットマップ画像のリンケージ名をPhoto1, Photo2...と連番で名前を付けた場合は下記のような書き方ができます。
//ドキュメントクラス package { import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; import flash.utils.getDefinitionByName; public class Main extends Sprite { //コンストラクタ function Main() { init(); } //実行関数 private function init():void { //写真の数分ループ for ( var i:uint = 0; i < 3; i++) { var str:String = "Photo" + ( i + 1 ); //文字列からクラス名に成形 var ClassRef:Class = getDefinitionByName(str) as Class; //ビットマップインスタンス生成 var bmd:BitmapData = new ClassRef(0,0); var bmp:Bitmap = new Bitmap(bmd); //各インスタンス座標 bmp.x = bmp.width * i; bmp.y = (stage.stageHeight - bmp.height) / 2; //ステージに配置 addChild(bmp); } } } }
"This is Demo Flash."
ちなみにこの3人は、左からホアン・アトキンス、デリック・メイ、ケビン・サンダーソンです。
09.07.17.AM02:18
http://plamo-tokyo.com/site/mt-tb.cgi/49