クラスをストリングで参照

クラスをストリングで参照する方法をつぶやいたら、早速野中さん@FumioNonaka)からご教授いただいたのでメモ。感謝。

var myClass:Class = getDefinitionByName(“flash.display.Sprite”) as Class;
trace(new myClass());
getDefinitionByName() が、Stringで指定したクラスのクラスオブジェクトへの参照を返してくれるのですね。
 
何をしたかったかというと、ライブラリのリンケージで指定したクラスを場合によって差し替えたかった…ということです。例えば、ライブラリにbtn0,btn1,btn2,…と複数のボタンがあったとして、下記のような関数で…
function xGetCurrentBtn(num:int):SimpleButton {
//クラスをストリングで参照
var myClass:Class = getDefinitionByName(“btn” + num) as Class;
var btn:SimpleButton = new myClass();
return btn;
}
みたいな感じです。