在ActionScript 3中,你会发现在flash.utils包中有一系列函数提供了反射的功能。主要包含以下功能:
* 确定对象的类
* 获取类的成员、方法、构造函数、父类的信息
* 确定接口声明的常数和方法
* 在运行时根据类名创建类的实例
* 在运行时根据成员名称获取或者设置对象成员的值
* 在运行时根据方法名称,调用对象的方法
你可以使用类似于"describeType"之类的功能,它返回一个Xml对象。举一个例子:
package {
import flash.display.Sprite;
import flash.utils.describeType;
public class DescribeTypeExample extends Sprite {
public function DescribeTypeExample() {
var child:Sprite = new Sprite();
var description:XML = describeType(child);
trace(description..accessor.@name.toXMLString());
}
}
}
如果你想进一步,根据类名创建对象的实例,我们可以使用"getDefinitionByName()"
package {
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.utils.getDefinitionByName;
public class GetDefinitionByNameExample extends Sprite {
private var bgColor:uint = 0xFFCC00;
private var size:uint = 80;
public function GetDefinitionByNameExample() {
var ClassReference:Class = getDefinitionByName(“flash.display.Sprite”) as Class;
var instance:Object = new ClassReference();
instance.graphics.beginFill(bgColor);
instance.graphics.drawRect(0, 0, size, size);
instance.graphics.endFill();
addChild(DisplayObject(instance));
}
}
}
尽管这是一些非常方便的方法,但是在FlashPlayer中使用反射还是会有许多的限制,因为缺乏运行时的动态源码编译。上面的功能对于那些在内建的类,比如:Sprite类来说无疑是有用的,但是对于自定义类来说,我们会遇到很多麻烦。比如:
package {
import com.customtypes.string; // Custom String Implementation Class
import flash.utils.getDefinitionByName;
public class GetDefinitionByNameExample {
public function GetDefinitionByNameExample() {
var ClassReference:Class = getDefinitionByName(“com.customtypes.string”) as Class;
var instance:Object = new ClassReference();
instance.customParameter = “my parameter”;
}
}
}
尽管我们使用了import语句,但是"getDefinitionByName()"还是会失败。原因上面已经说过了,在运行时编译源代码是不允许的。也许以后可以。在目前情况下,要实现上述功能,至少要在代码中初始化一个类的实例。也就是声明一个类的实例:
var customType : com.customtypes.string;
分享到:
相关推荐
### ActionScript与Flex教程知识点概览 #### 一、ActionScript简介 - **定义与历史**:ActionScript是一种面向对象的脚本语言,主要用于增强Adobe Flash Player和Adobe AIR中的交互性和功能。它最初由Macromedia...
在Flash和Flex中,3D渲染主要依赖于ActionScript 3.0,这是一个面向对象的编程语言,用于编写运行在Flash Player或Adobe AIR上的交互式内容。在这个案例中,"Figure"可能是一个用ActionScript编写的3D对象,它可以是...
Flex 3D支持多种光照类型(如点光源、平行光等)和材质属性(如颜色、镜面反射、环境贴图等),让3D模型更具真实感。 5. **动画和交互**:Flex 3D提供了丰富的动画控制机制,可以创建平滑的3D过渡效果。同时,用户...
在Flex中,ActionScript 3.0提供了反射API,主要由`flash.utils`包下的`getQualifiedClassName`、`getQualifiedSuperclassName`、`getDefinitionByName`、`describeType`等函数组成。 2. **核心API**: - `...
Flex是Adobe公司开发的一种基于ActionScript的开源框架,主要用于构建富互联网应用程序(RIA)。它提供了丰富的用户界面组件和强大的数据绑定功能,使开发者能够创建出交互性极强的Web应用。在本压缩包中,"超炫的3D...
Flex是由Adobe开发的一种基于ActionScript 3.0的开源框架,用于构建具有丰富用户界面的Flash应用程序。在Flex中实现3D效果,可以让开发者创建出更为生动和立体的交互体验。 在Flex中实现3D圆形隧道效果,需要掌握...
Flex是一种基于ActionScript 3的开源框架,主要用于构建富互联网应用程序(RIA)。它提供了丰富的用户界面组件和强大的数据绑定机制,使得开发人员可以轻松地控制SWF文件的交互性。 首先,让我们理解SWF文件。SWF是...
通过Flex3d这个子目录,我们可以推测DEMO中可能包含了一系列与Flex相关的源代码文件,如MXML和AS3文件。Flex是基于ActionScript的开发框架,用于构建RIA,它提供了丰富的UI组件和事件处理机制,使得开发者可以更加...
Flex是一种用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript 3(AS3)编程语言和MXML标记语言。这些开源项目为开发者提供了丰富的组件库、工具和框架,帮助他们扩展Flex的功能,提高开发效率,并实现...
ActionScript 3.0是Adobe Flex和Flash开发中的主要编程语言,相较于早期版本,它有显著的性能提升和更严谨的面向对象特性。ActionScript 3.0引入了强类型、类和包的概念,使得代码更加模块化和可维护。在PV3D项目中...
《Flex前端与Java服务端交互反射机制》 在软件开发中,前端与后端的交互是必不可少的一部分。本文主要探讨了使用Flex作为富互联网应用程序(RIA)前端与Java服务端进行交互的反射机制。Flex以其丰富的用户体验和...
4. **as3commons-lang.swc**:这是AS3 Commons库的一部分,提供了一些ActionScript 3标准库中没有的实用工具类,包括字符串处理、集合操作、反射等功能,增强了ActionScript的实用性。 5. **as3commons-reflect.swc...
2. **Flex3D的主要特性**: - **3D对象和场景**:Flex3D允许创建、旋转、缩放和移动3D对象,同时可以构建和管理复杂的3D场景。 - **光照和材质**:支持多种光照模型和材质效果,如漫射、镜面反射、环境光等,增强...
然后,打开 Flex Builder 3,创建一个新的 Flex Project,命名为 EmployeeMgmt-Flex: 图 3. 新建 Flex 工程 - 第一步 Flex Project 需要指定 Server 端的配置文件地址: 图 4. 新建 Flex 工程 - 第二步 ...
Flex 3D是一种基于Adobe ...同时,你还需要学习相关的Flex SDK和ActionScript 3.0知识,以便更好地理解和修改代码。记住,动手实践是学习任何技术的最佳途径,所以尝试运行和调试这些示例,以加深对Flex 3D的理解。
2. 将这个材质应用到需要反射的物体上。 3. 设置反射映射(ReflectionMap)。这可能是一个专门的反射纹理,或者是实时捕捉场景的动态反射。 4. 调整反射强度、模糊度等参数以达到理想效果。 在实际应用中,我们可能...
为了能完成自动生成 RemoteObject 对象,我编写了一个 Java2ActionScript 的 Ant 任务来自动转换 FlexService 接口以及相关的所有 JavaBean。JavaInterface2RemoteObjectTask 完成一个 Java 接口对象到 RemoteObject...
- C#可以通过反射或委托机制来调用Flex中的方法。在C#端创建一个委托,对应Flex中的方法签名,然后在需要调用Flex方法时,通过Flash控件发送消息到Flex端,由Flex端的事件监听器接收并执行相应的方法。 5. **通信...
在学习和使用Flex特效编辑器时,开发者应掌握基本的Flex编程知识,了解ActionScript和MXML,这是Flex应用程序的基础。同时,熟悉图形设计和动画原理也是必要的,这将有助于创造出更具艺术感的特效。 总而言之,Flex...