getDefinitionByName 的使用方法
介紹:
getDefinitionByName是flash.utils下面的,屬于工具包類(lèi)。正如函數(shù)名稱(chēng)是通過(guò)Name來(lái)獲得該名稱(chēng)所對(duì)應(yīng)的類(lèi)對(duì)象,意思就是說(shuō)通過(guò)一個(gè)類(lèi)的名稱(chēng)能夠獲取到該類(lèi)對(duì)象,從而通過(guò)該類(lèi)對(duì)象聲明一個(gè)該類(lèi)的實(shí)例對(duì)象。注意該函數(shù)中的參數(shù)name=類(lèi)路徑+類(lèi)名稱(chēng)。
實(shí)例:
var btncls:Class = getDefinitionByName("mx.controls.Button") as Class ;
var myBtn:Object = new btncls() ;
myBtn.label = "我是通過(guò)名字獲得類(lèi)實(shí)例聲明出來(lái)的BTN" ;
this.addChild( myBtn as DisplayObject ) ;
應(yīng)用:
現(xiàn)在在flex里面要用到在flash cs3 設(shè)計(jì)一批元件,當(dāng)然可以通過(guò)導(dǎo)出元件的swc然后添加到工程下面的libs下,當(dāng)需要在flex里面把這些若干元件當(dāng)成庫(kù)來(lái)獲取庫(kù)中的單個(gè)元素時(shí),我們就可以通過(guò)geDefinitionByName函數(shù)來(lái)實(shí)現(xiàn),具體實(shí)現(xiàn)步驟為下:
第一:在flash cs3中準(zhǔn)備好若干個(gè)元件,并為元件添加鏈接名稱(chēng)(最好鏈接名稱(chēng)和元件名稱(chēng)一樣)。然后在場(chǎng)景的第一幀里面添加代碼如下:
function getClassByName(cname:String):Class //cname即為元件的鏈接名稱(chēng)。
{
var mc:Class = getDefinitionByName(cname) as Class;
return mc;
}
然后生成swf。
第二:將swf文件放入工程中,用loader將swf文件導(dǎo)入到程序中。在loader導(dǎo)入成功(觸發(fā)Event.Complete事件)后,loader.content即為swf。然后訪問(wèn)對(duì)象的getClassByName()來(lái)獲取swf中的元件。存入庫(kù)中,以備后用。
代碼如下:
var nameArr:Array = ["燭光","菊花"] ;
var mcArr:Array = new Array() ;
function init():void
{
var loader:Loader = new Loader() ;
loader.contentLoaderInfo.addEventLinstener( Event.COMPLETE , onComplete ) ;
loader.load(new URLRequest("assets/firelib.swf")) ;
}
function onComplete(evnet:Event):void
{
for(var i:uint=0 ; i<nameArr.length ; i++)
{
var cls:Class = Object( event.target.content).getClassByName(nameArr[i]) ;//getClassByName()即為swf場(chǎng)景中定義的函數(shù)。
mcArr.push( { name:nameArr[i] , content:new cls() } ) ;
}
}
延伸:
getQualifiedClassName(value:*)String
根據(jù)一個(gè)對(duì)象返回該對(duì)象的包含完全限定類(lèi)名稱(chēng)的字符串。
getQualifiedSuperClassName(value:*)String
根據(jù)一個(gè)對(duì)象返回該對(duì)象的基類(lèi)的完全限定類(lèi)名的字符串。
在通過(guò)上面兩個(gè)方法得到一個(gè)完全限定類(lèi)名稱(chēng)之后,運(yùn)用 getDefinitionByName()就可以將類(lèi)名轉(zhuǎn)換成類(lèi)應(yīng)用。
posted on 2010-09-09 19:16 junlin 閱讀(1572) 評(píng)論(1) 編輯 收藏