Flash 動態Class名稱 使用getDefinitionByName方法(AS3.0)

昨天碰到一個問題,有時我們會在元件庫上,為元件"綁定類別"(Linkage),程式中要用時再new出這個元件。
ex:

var mc:MovieClip=new mc1();
stage.addChild(mc);


假設我有mc1~mc3,3個MovieClip,要隨機產生一個,所以我的程式碼如下:

var ranNum:int=Math.floor(Math.random()*3)+1;//得到1~3間的亂數
var mc:MovieClip;
switch(ranNum){
case 1:
mc=new mc1();
break;
case 2:
mc=new mc2();
break;
default :
mc=new mc3();
}
stage.addChild(mc);


那…如果我有10個呢? case寫10個判斷? 100個呢?ctrl+c、ctrl+v按個沒完沒了?
所以~找到了一個getDefinitionByName()的函數。
修改的程式碼如下:

var ranNum:int=Math.floor(Math.random()*3)+1;//得到1~3間的亂數
var tempClass=getDefinitionByName("mc"+ranNum);
var mc:MovieClip=new tempClass();
stage.addChild(mc);

簡潔多了吧~

範例:
http://www.box.net/shared/vrj4y61y9i