AS3中的反射(速记) 分析_Flash as3

取类名: 传进一个object,返回类的全名

var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedClassName(loader);
trace(className); // Displays flash.net.URLLoader

取父类的类名:传进一个object,返回父类的类名

var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedSuperclassName(loader);
trace(className); // Displays flash.events.EventDispatcher

根据类名取类

var classReference:Class = Class(getDefinitionByName("flash.net.URLLoader"));
//一但你得到了类的引用后,就可以这样
var instance:Object = new classReference( );

getQualifiedClassName( ) 或 getQualifiedSuperclassName( ) 与 getDefinitionByName() 结合使用的例子:

var loader:URLLoader = new URLLoader( );
var className:String = getQualifiedClassName(loader);
var classReference:Class = Class(getDefinitionByName(className));
var instance:Object = new classReference( );

Introspection:describeType( )返回对象的类型描述

例如:

var loader:URLLoader = new URLLoader( );
var description:XML = describeType(loader);
trace(description);

输出:

<type name="flash.net::URLLoader" base="flash.events::EventDispatcher"
isDynamic="false" isFinal="false" isStatic="false">
<metadata name="Event">
<arg key="name" value="httpStatus"/>
<arg key="type" value="flash.events.HTTPStatusEvent"/>
</metadata>
<metadata name="Event">
<arg key="name" value="securityError"/>
<arg key="type" value="flash.events.SecurityErrorEvent"/>
</metadata>
<metadata name="Event">
<arg key="name" value="ioError"/>
<arg key="type" value="flash.events.IOErrorEvent"/>
</metadata>
<metadata name="Event">
<arg key="name" value="progress"/>
<arg key="type" value="flash.events.ProgressEvent"/>
</metadata>
<metadata name="Event">
<arg key="name" value="complete"/>
<arg key="type" value="flash.events.Event"/>
</metadata>
<metadata name="Event">
<arg key="name" value="open"/>
<arg key="type" value="flash.events.Event"/>
</metadata>
<extendsClass type="flash.events::EventDispatcher"/>
<extendsClass type="Object"/>
<implementsInterface type="flash.events::IEventDispatcher"/>
<constructor>
<parameter index="1" type="flash.net::URLRequest" optional="true"/>
</constructor>
<variable name="bytesTotal" type="uint"/>
<variable name="data" type="*"/>
<method name="load" declaredBy="flash.net::URLLoader" returnType="void">
<parameter index="1" type="flash.net::URLRequest" optional="false"/>
</method>
<method name="close" declaredBy="flash.net::URLLoader" returnType="void"/>
<variable name="dataFormat" type="String"/>
<variable name="bytesLoaded" type="uint"/>
<method name="dispatchEvent" declaredBy="flash.events::EventDispatcher"
returnType="Boolean">
<parameter index="1" type="flash.events::Event" optional="false"/>
</method>
<method name="toString" declaredBy="flash.events::EventDispatcher"
returnType="String"/>

时间: 2024-08-07 22:23:34

AS3中的反射(速记) 分析_Flash as3的相关文章

Flash AS3 中的反射 — Reflection

谢草莓和 yhc13 提供人肉翻译机支持 什么是反射反射 (Reflection) 是指在程序在运行时 (run-time) 获取类信息的方式. 诸如实现动态创建类实例, 方法等. 在很语言中都有相关的的实现, 如 Java 和 c# 等 反射有什么用在 as3 与 as2 不同, 类实例中任何元素, 如变量 (variable), 访问器 (accessor, 即 getter / setter), 方法 (method) 都是不可被 for..in 遍历的 (不是默认哦, 目前我还没找到办法

Google Analytics在Flash cs3下的使用教程分析_Flash as3

这是Google的相关说明(http://code.google.com/intl/zh-CN/apis/analytics/docs/flashTrackingIntro.html),大家有兴趣可以去看一下,我这里做了一个教程,教大家一步一步的使用这个组件.一.申请Gmail帐户因为这个组件获取的数据是跟帐户捆绑的,所以,需要有一个Gmail帐户.打开http://www.google.cn/analytics/zh-CN/ ,选择立即注册,然后选择立即注册然后填好信息后,点'我接受:创建我的

Actionscript 3.0中Singleton实现 修正篇_Flash as3

在前面的blog中,代码如下: 复制代码 代码如下: package Src { /** * Written by Leezhm, 10th February, 2009 * Contact : Leezhm@126.com * * An example of singleton class **/ public class CSingleton { // variable private static var _instance = new CSingleton(); protected fu

As3.0中的反射

给你一个代码代表"类"完整路径的字符串,比如"flash.text.TextField",你能用AS3.0在舞台上动态创建一个该类的实例么?(用var txt:TextField = new TextField()作弊的不算) var txtClass:Class = getDefinitionByName("flash.text.TextField") as Class; var txtInstance:TextField = new txtC

AS3 中的package(包)应用实例代码_Flash as3

包(package)的概念在AS2中就已经存在,它表示硬盘中的一个目录结构,该目录结构是用来分类存贮各种类文件的.在AS3中这个概念仍旧可以理解为是一个路径,或是目录结构,包的名称也就是你的类所在的目录位置. 如果类文件和fla文件保存在同一个目录位置中,那么就不需要为"包"指定一个名字.比如:我们先建立这样一个 MyMsg.as 类定义文件,文件中输入以下的代码: package {     public class MyMsg {          public function 

html和xml中的转义字符在Flash as3中的用法浅析

在as3中使用特殊字符的时候,不小心就会出现错误,要么字符没有被显示,要么显示的不对,本文章就此做一个简单的分析,如有更好的分析,请一定要跟贴. sample.xml和sample_cdata.xml是本例需要用到的xml文件,请点击查看他们的内容,本例以特殊字符< 和> 为例:文本字符串变量为txt, 显示文本的名称为shwo_txt. 由于html和xml中<和>有特殊含义,不能直接使用,使用这两个字符时,应使用他们的转义序列,也即<和>,故在xml文件中<

FLASH AS3 中使用URLRequest 和URLLoader 与服务器交互

request|服务器|交互 AS3 中使用URLRequest 和URLLoader 与服务器交互 AS3 中使用 URLLoader 与 URLRequest 取代了先前版本 LoadVars 方法. 初学者可能又会迷糊了.在现在帮助系统没有完善的情况下 (Flash 9 没有帮助, Flex Builder 2 的只有英文), 这里写篇简单的教程, 方便大家往 AS3 过渡. 在 AS3 中, 有关于网络操作的内置类全部在 flash.net 里. 下面是本教程要用到的类的清单 : URL

AS3中新的XML处理方法 - E4X

xml 今天我们来看看AS3中新的XML处理方法:E4X,直到现在,ECMA脚本语言规范(ECMA-262)--AscriptScript 3.0的核心基础,并没有提供任何的XML数据处理类或方法.AcriontScript之前的版本(从Flash 5中的ActionScript开始)有一些处理XML数据的类和方法,但是它们并不是基于ECMAScript标准的. 新的ECMA脚本语言规范第4版草稿中定义了一系列新的处理XML数据的类和方法.这些类和方法的集合并命名为E4X("ECMAScript

flash as3 中动态加载库类失败解决方法

flash as3 中动态加载库类失败解决方法 这是错误的写法 for (var i:number=1; i<4; i++) { var mc1:mc1 = new mc1(); addchild(mc1); } as3里怎么循环加载库里的mc1 mc2 mc3类 就是下面意思是怎样个的写法 for (var i:number=1; i<4; i++) { var "mc"+i:"mc"+i = new "mc"+i(); addch