详细了解AS3的反射,请google相关文章,这里只是速记一下
取类名: 传进一个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 base="flash.events::EventDispatcher" name="flash.net::URLLoader">isDynamic="false" isFinal="false" isStatic="false"> <br><metadata name="Event"><br><arg key="name" value="httpStatus"></arg><br><arg key="type" value="flash.events.HTTPStatusEvent"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="securityError"></arg><br><arg key="type" value="flash.events.SecurityErrorEvent"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="ioError"></arg><br><arg key="type" value="flash.events.IOErrorEvent"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="progress"></arg><br><arg key="type" value="flash.events.ProgressEvent"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="complete"></arg><br><arg key="type" value="flash.events.Event"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="open"></arg><br><arg key="type" value="flash.events.Event"></arg><br></metadata><br><extendsclass type="flash.events::EventDispatcher"></extendsclass><br><extendsclass type="Object"></extendsclass><br><implementsinterface type="flash.events::IEventDispatcher"></implementsinterface><br><constructor><br><parameter index="1" type="flash.net::URLRequest" optional="true"></parameter><br></constructor><br><variable name="bytesTotal" type="uint"></variable><br><variable name="data" type="*"></variable><br><method name="load" declaredby="flash.net::URLLoader" returntype="void"><br><parameter index="1" type="flash.net::URLRequest" optional="false"></parameter><br></method><br><method name="close" declaredby="flash.net::URLLoader" returntype="void"></method><br><variable name="dataFormat" type="String"></variable><br><variable name="bytesLoaded" type="uint"></variable><br><method name="dispatchEvent" declaredby="flash.events::EventDispatcher">returnType="Boolean"> <br><parameter index="1" type="flash.events::Event" optional="false"></parameter><br></method><br><method name="toString" declaredby="flash.events::EventDispatcher">returnType="String"/> <br><br>本文转自 <br><a href="http://www.nshen.net/blog/article.asp?id=525">http://www.nshen.net/blog/article.asp?id=525</a> </method></type>
取类名: 传进一个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 base="flash.events::EventDispatcher" name="flash.net::URLLoader">isDynamic="false" isFinal="false" isStatic="false"> <br><metadata name="Event"><br><arg key="name" value="httpStatus"></arg><br><arg key="type" value="flash.events.HTTPStatusEvent"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="securityError"></arg><br><arg key="type" value="flash.events.SecurityErrorEvent"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="ioError"></arg><br><arg key="type" value="flash.events.IOErrorEvent"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="progress"></arg><br><arg key="type" value="flash.events.ProgressEvent"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="complete"></arg><br><arg key="type" value="flash.events.Event"></arg><br></metadata><br><metadata name="Event"><br><arg key="name" value="open"></arg><br><arg key="type" value="flash.events.Event"></arg><br></metadata><br><extendsclass type="flash.events::EventDispatcher"></extendsclass><br><extendsclass type="Object"></extendsclass><br><implementsinterface type="flash.events::IEventDispatcher"></implementsinterface><br><constructor><br><parameter index="1" type="flash.net::URLRequest" optional="true"></parameter><br></constructor><br><variable name="bytesTotal" type="uint"></variable><br><variable name="data" type="*"></variable><br><method name="load" declaredby="flash.net::URLLoader" returntype="void"><br><parameter index="1" type="flash.net::URLRequest" optional="false"></parameter><br></method><br><method name="close" declaredby="flash.net::URLLoader" returntype="void"></method><br><variable name="dataFormat" type="String"></variable><br><variable name="bytesLoaded" type="uint"></variable><br><method name="dispatchEvent" declaredby="flash.events::EventDispatcher">returnType="Boolean"> <br><parameter index="1" type="flash.events::Event" optional="false"></parameter><br></method><br><method name="toString" declaredby="flash.events::EventDispatcher">returnType="String"/> <br><br>本文转自 <br><a href="http://www.nshen.net/blog/article.asp?id=525">http://www.nshen.net/blog/article.asp?id=525</a> </method></type>
本文介绍了ActionScript 3 (AS3) 中的反射机制,包括如何获取类名、父类名及类引用的方法,并通过实例展示了如何使用这些方法。此外还讲解了如何利用describeType()方法来获取对象类型的详细描述。
399

被折叠的 条评论
为什么被折叠?



