加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

getDefinitionByName 的使用方法

发布时间:2020-12-15 01:15:01 所属栏目:百科 来源:网络整理
导读:? 介绍: ???? getDefinitionByName是flash.utils下面的,属于工具包类。正如函数名称是通过Name来获得该名称所对应的类对象,意思就是说通过一个类的名称能够获取到该类对象,从而通过该类对象声明一个该类的实例对象。注意该函数中的参数name=类路径+类名
?

介绍:

???? 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() } ) ;

?????????? }

???????}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读