文档章节

getDefinitionByName巧妙应用

岳淼-
 岳淼-
发布于 2017/03/27 11:11
字数 541
阅读 11
收藏 0

介绍:

     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()就可以将类名转换成类应用。

© 著作权归作者所有

共有 人打赏支持
岳淼-
粉丝 18
博文 25
码字总数 20067
作品 0
沈阳
前端工程师
私信 提问
获取实例的类或超类名-ActionScript3 Tips and Tricks

获取实例的类或超类名-ActionScript3 Tips and Tricks 2007-09-15 – 10:30 上午 | 由 zrong 发布 | 357 次查看 本文是ActionScript3 Tips and Tricks系列阅读笔记之一Determine Instance Cl...

付翔
2010/01/14
0
0
舞台上加载一外部SWF,舞台如何调用该swf内部方法

可以使用getDefinitionByName方法,也可以用ApplicationDomain的getDefinition方法,提供获取Class的方法如下: public function getClass(className:String, domain:ApplicationDomain = nu......

村干部
2013/05/06
0
0
(1)看flex_help文档之非可视化组件

非可视化组件都放在fx:declarations/ (1)三种RPC组件分别是webserivce,httpSerivce,RemoteObject (2)validator (3)formatter (4)css (5)skins (6)effect:指短时间内改变组件的动作,比如res...

leesama
2013/07/07
0
0
LeetCode 141. Linked List Cycle (链表环判断)

原题 Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked list, we use an integer which represents the position (0-indexed) in the li......

dby_freedom
2018/12/08
0
0
STM32系统滴答_及不可不知的延时技巧 - (下)

下面为大家介绍一个曾见过的在裸机系统中,非阻塞延时的巧妙设计,当时它是被用在一导航影音娱乐系统的MCU驱动软件中,在此我对其作了一定的改动。 此章节涉及到STM32内容不多,以软件为主。...

小汉憨憨
2014/05/07
0
3

没有更多内容

加载失败,请刷新页面

加载更多

https://www.jianshu.com/p/dbffae16ba0b

https://www.jianshu.com/p/dbffae16ba0b

张宏亮1982
30分钟前
5
0
linux基本命令

linux常用shell命令=命令+选项+参数 cd (change directory)切换目录 cd #root根目录 cd / #系统根目录 cd ../../ #返回上上一层目录 ls/dir (list)列出目录下文件 ls -a (--all) #列出所...

陈刚生
35分钟前
2
0
30分钟学会如何使用Shiro

本篇内容大多总结自张开涛的《跟我学Shiro》原文地址:http://jinnianshilongnian.iteye.com/blog/2018936 我并没有全部看完,只是选择了一部分对我来说急需在项目中使用的知识加以学习。并且...

群星纪元
37分钟前
2
0
常用算法之快速排序python&php

python(快速排序): # -*- UTF-8 -*- def quicksort(arr): if (len(arr)) < 2: return arr; mark = arr[0] #递归条件 #第一种方式 # left = [i for i in arr[1:] if i < mark]; # right = [i ......

山人有妙计
40分钟前
0
0
synchronized关键字

synchronized关键字可分为对象锁和类锁,修饰对象可分为代码块和方法 。 修饰代码块: 1.对象锁:synchronized (this) 或 synchronized (object) : 如果是同一个实例,则代码块的执行有先后;...

某只小强
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部