JunXiu

          getDefinitionByName 的使用方法

          介紹:

               getDefinitionByName是flash.utils下面的,屬于工具包類。正如函數名稱是通過Name來獲得該名稱所對應的類對象,意思就是說通過一個類的名稱能夠獲取到該類對象,從而通過該類對象聲明一個該類的實例對象。注意該函數中的參數name=類路徑+類名稱。

           

          實例:

               var btncls:Class = getDefinitionByName("mx.controls.Button") as Class ;

               var myBtn:Object = new btncls() ;

               myBtn.label = "我是通過名字獲得類實例聲明出來的BTN" ;

                this.addChild( myBtn as DisplayObject ) ;

           

          應用:

               現在在flex里面要用到在flash cs3 設計一批元件,當然可以通過導出元件的swc然后添加到工程下面的libs下,當需要在flex里面把這些若干元件當成庫來獲取庫中的單個元素時,我們就可以通過geDefinitionByName函數來實現,具體實現步驟為下:

               第一:在flash cs3中準備好若干個元件,并為元件添加鏈接名稱(最好鏈接名稱和元件名稱一樣)。然后在場景的第一幀里面添加代碼如下:

                function getClassByName(cname:String):Class  //cname即為元件的鏈接名稱。
                {
                   var mc:Class =  getDefinitionByName(cname) as Class;
                   return mc;
                }

                然后生成swf。

                第二:將swf文件放入工程中,用loader將swf文件導入到程序中。在loader導入成功(觸發Event.Complete事件)后,loader.content即為swf。然后訪問對象的getClassByName()來獲取swf中的元件。存入庫中,以備后用。

                代碼如下:

                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場景中定義的函數。

                       mcArr.push( { name:nameArr[i] , content:new cls() } ) ;

                     }

                 }

           

          延伸:

               getQualifiedClassName(value:*)String

                    根據一個對象返回該對象的包含完全限定類名稱的字符串。

                getQualifiedSuperClassName(value:*)String

                    根據一個對象返回該對象的基類的完全限定類名的字符串。

                在通過上面兩個方法得到一個完全限定類名稱之后,運用 getDefinitionByName()就可以將類名轉換成類應用。

          posted on 2010-09-09 19:16 junlin 閱讀(1572) 評論(1)  編輯  收藏

          評論

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

          恩恩,很實用~  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

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

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 堆龙德庆县| 招远市| 牟定县| 鄂伦春自治旗| 南康市| 英吉沙县| 临武县| 分宜县| 灵武市| 金门县| 滨州市| 温宿县| 互助| 东乌珠穆沁旗| 黄梅县| 那坡县| 梁平县| 巴东县| 莱芜市| 浦北县| 凌云县| 宜兴市| 拜城县| 新安县| 集安市| 安宁市| 吉安县| 浪卡子县| 饶平县| 平陆县| 息烽县| 克山县| 昆明市| 延吉市| 永川市| 丹东市| 固始县| 建始县| 瓮安县| 沙湾县| 乌鲁木齐市|