var sprite1:Sprite = new Sprite();
//获取完整类名
var classNameOfSprite:String = getQualifiedClassName(Sprite);
//获取字节码
var ClassReference:Class = getDefinitionByName(classNameOfSprite) as Class;
//实例化对象
var instance:Sprite = new ClassReference() as Sprite ;
//使用describeType方法以xml方式输出类信息
describeType(ProposalModelLocator.getInstance().proposalInfoAC);根据xml进行反射
package
{
public class UserEntity
{
private var _username:String;
private var _password:String;
public function UserEntity()
{
}
public function get password():String
{
return _password;
}
public function set password(value:String):void
{
_password = value;
}
public function get username():String
{
return _username;
}
public function set username(value:String):void
{
_username = value;
}
}
}
protected function button2_clickHandler(event:MouseEvent):void
{
var userEntity:UserEntity = new UserEntity();
userEntity.username="asdf";
var instanceInfo:XML = describeType(userEntity);
trace(instanceInfo);
var properties:XMLList = instanceInfo..accessor.(@access != "writeonly") + instanceInfo..variable;
for each (var propertyInfo:XML in properties)
{
var propertyName:String = propertyInfo.@name;
trace(userEntity[propertyName]);
}
}
可以根据以下信息进行反射。
标签 |
属性 |
说明 |
<type>
|
|
XML 对象的根标签 |
|
name |
ActionScript 对象 (ActionScript object) 类型 |
|
base |
当前对象的直属超类, 如果当前 ActionScript 对象是类对象, 那那么该值为 Class
. |
|
isDynamic |
如果当前 ActionScript 对象被定义为 dynamic, 那么该属性为 true
, 否则为
false
. 如果当前 ActionScript 对象是类对象, 那么该属性也为 true
, 因为
Class 类是 dynamic 的 |
|
sFinal |
如果当前 ActionScript 对象被定义为 final, 那么该属性为 true
, 否则为 false
|
|
isStatic |
如果当前 ActionScript 是类对象或者构造函数, 那么该属性为 true
, 否则为 false
.
该属性被命名为 isStatic
是因为如果值为 true
的话, 任何标签都不会被嵌套到
factory
标签中 |
<extendsClass>
|
|
使用 extendsClass
标签分别存放当前 ActionScript 对象的超类 |
|
type |
当前 ActionScript 对象所继承的超类的名字 |
<implementsInterface>
|
|
使用 implementsInterface
标签分别存放当前 ActionScript 对象, 以及他的超类所实现的接口 |
|
type |
当前 ActionScript 所实现的接口的名字 |
<accessor>
|
|
访问器是由 getter 和 setter 所定义的属性 |
|
name |
该访问器的名字 |
|
access |
该访问器的访问权限. 可能的值有 readonly
, writeonly
, 和
readwrite
. |
|
type |
该属性的数据类型 |
|
declaredBy |
指示由哪个类定义了该访问器 |
<constant>
|
|
常量是由 const
所定义的属性 |
|
name |
该常量的名称 |
|
type |
该常量的数据类型 |
<method>
|
|
方法是由类定义的一部分公开的函数 |
|
name |
方法名 |
|
declaredBy |
指示该方法由哪个类定义 |
|
returnType |
方法的返回类型 |
<parameter>
|
|
使用 parameter
分别存放该方法的参数, 该标签被嵌套在 <method>
中 |
|
index |
一个数字指示当前参数被传递时所在函数中的位置, 如果是首个参数, 那么该值为 1 |
|
type |
该参数的类型 |
|
optional |
如果该参数为可选的话为 true
, 否则为 false
|
<variable>
|
|
变量 (variable) 是由 var 语句所定义的变量 |
|
name |
变量名 |
|
type |
变量类型 |
<factory>
|
|
如果当前 ActionScript 对象是类对象或者构造函数, 所有的实例属性将会被嵌套进该标签. 如果 <type>
标签的 isStatic
属性为 true
, 所有属性 (properties) 和方法 (method)
将不会被嵌套进改标签中. 该标签只出现在当前 ActionScript 对象是类对象或者构造函数的情况下 |
|
|
|
分享到:
相关推荐
在ActionScript 3 (AS3)中,反射是一种强大的编程技术,它允许程序在运行时检查自身的行为和结构。这包括获取类的信息、实例化对象、调用方法、访问属性等,即使这些信息在编译时是未知的。反射机制在处理动态语言...
在ActionScript 3 (AS3)中,反射是一种强大的编程技术,它允许程序在运行时检查自身和其他类的结构和行为。AS3反射API提供了一种方式,让我们可以在程序执行过程中动态地获取类的信息,包括类的属性、方法、变量等。...
As2Commons通过`org.as3commons.reflect`包提供了一系列的反射API,下面我们来详细介绍其中几个重要的类和接口: 1. **`Type`**:代表一个类或接口的信息,包含了很多方法用于获取该类型的各种信息,如字段、构造...
标题中的“3D立体展示图片-附as3源码”表明这是一个使用ActionScript 3.0(AS3)编程语言创建的项目,旨在实现3D立体图像的展示。ActionScript是Adobe Flash Platform的一部分,主要用于开发富互联网应用程序(RIA)...
在Flash AS3中,3D立体墙是一种交互式的可视化技术,它允许用户以三维的方式浏览和操作元素,比如图片、视频或图标。这种技术在网页设计、游戏开发以及数据展示等领域有着广泛的应用。以下是关于“Flash AS3 3D立体...
在本文中,我们将深入探讨如何使用ActionScript 3(AS3)来创建逼真的水波效果,这是一种在交互式媒体项目中广泛应用的技术,特别是在鼠标交互、展馆地面展示和其他视觉艺术表现中。ActionScript 3是Adobe Flash ...
本主题聚焦于一个基于Flash平台,使用ActionScript 3(AS3)编写的3D SNS(社交网络服务)游戏源码。下面将详细讨论这个项目中涉及的关键技术点。 首先,"A*寻路算法"是游戏中角色或AI自动导航的基础。A*算法是一种...
在AS3(ActionScript 3)中实现光线追踪渲染是一项技术挑战,因为AS3主要用于开发Flash内容,而它并非专为高性能计算设计。尽管如此,通过巧妙的算法优化,可以在AS3中实现光线追踪。 光线追踪的基本原理是模拟光线...
在本文中,我们将深入探讨如何使用ActionScript 3(AS3)和 Papervision3D(PV3D)库在Flash环境中实现一个交互式的魔方效果。首先,我们需要理解AS3是Adobe Flash Professional和Flex Builder等开发工具的主要编程...
在Flash Player的支持下,ASGL使得开发者能够利用ActionScript 3(AS3)编程语言构建复杂的3D应用,如游戏、模拟器、数据可视化工具等。 在ASGL中,核心概念包括场景(Scene)、相机(Camera)、光源(Light)、...
说明:这个是用来实现已在场景中的Mc复制多个出来,如AS2中可以duplicateMovieClip,AS3中用是用New和addChild的, 有人会说As3可以用 方法1——反射方法: var ClassRef:Class = getDefinitionByName...
3. **方法调用**:反射允许你在运行时动态调用对象的方法,包括私有方法和静态方法。这对于实现元编程或者插件系统等高级功能是必不可少的。 4. **类型检查**:你可以检查一个对象是否属于特定的类或接口,这在动态...
- **反射与动态类型**:Java 的反射在 AS3 中较弱,转换时可能需要避免或重构涉及反射的部分。 4. **源码与工具的配合** 转换过程中,你可能会遇到源码中的一些特殊结构或库依赖,这时需要对 Java 和 AS3 两者的...
3. 在RC上配置BGP AS 200、OSPF和Loopback0接口,地址为3.3.3.3/24。 4. 在RD上配置BGP AS 200和Loopback0接口,地址为4.4.4.4/24。 5. 在各个路由器之间建立EBGP和IBGP邻接关系。 6. 使用sh ip bgp命令来验证路由...
在标题和描述中,"pv3d开发工具as3 编写"表明这是一个使用AS3开发的PV3D工具集或框架,可能是为了简化和加速3D内容的创建。这样的工具可能包括类库、示例代码、调试工具、编辑器插件等,旨在帮助开发者更好地理解和...
在.NET框架中,反射是一个强大的工具,它允许程序在运行时检查自身和其他程序集的元数据,从而实现动态类型操作、实例化对象、调用方法、访问字段等。本参考手册将深入探讨如何在Visual Basic .NET中有效地利用反射...
3. 序列化/反序列化:在保存和恢复对象状态时,反射可以用来读写对象的私有字段。 4. 插件架构:通过反射加载和调用插件中的类和方法,实现可扩展性。 这个“VB.NET 反射 示例Demo(项目用)”可能包含了上述概念的...
**PV3D AS3 第三方类库** PV3D(Papervision3D)是ActionScript 3(AS3)平台上的一个开源三维(3D)图形引擎,它为Flash开发者提供了在Web上创建复杂3D场景的能力。PV3D的出现极大地扩展了Flash的视觉表现力,使得...
3. 获取属性值:一旦找到属性,可以使用PropertyInfo对象的`GetValue()`方法获取属性的当前值。 ```vbnet Dim propertyValue As Object = myProperty.GetValue(myInstance) ``` 4. 设置属性值:如果属性是可写的,...
由本群【天空air_as3_北京】分享的关于反射理论的Demo 可以帮助理解反射的用法和原理