JunXiu

          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)  編輯  收藏

          評(píng)論

          # re: getDefinitionByName 的使用方法 2012-04-17 15:36 Vector_dai

          恩恩,很實(shí)用~  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          <2010年9月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類(lèi)

          隨筆檔案

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 喀喇沁旗| 郸城县| 洪泽县| 湛江市| 武山县| 加查县| 通州区| 长沙市| 曲阳县| 江陵县| 广西| 屏南县| 岑巩县| 犍为县| 宜都市| 汉寿县| 华阴市| 和政县| 阿图什市| 肥乡县| 铁岭县| 新平| 怀柔区| 营山县| 永修县| 木里| 资阳市| 孟津县| 保德县| 弥渡县| 柳河县| 天津市| 自治县| 股票| 凌云县| 河曲县| 南康市| 怀集县| 萨嘎县| 阜城县| 泰宁县|