flex component也可以使用反射技术

本文介绍了在Flex中使用反射机制的方法,特别是如何通过`getDefinitionByName`函数来实例化组件。同时探讨了在某些情况下,Flex编译器可能不会包含未使用的类,并提供了解决方案。
一般谈到反射 都是对class 进行反射
flex 的component  的表现形式似乎不像我们正常见到的类 

public class classname{
} 此类

但是依然可以使用反射

首先如何使用反射
flex 提供一个utils
具体位置flash.utils.getDefinitionByName
getDefinitionByName()function 
public function getDefinitionByName(name:String):Object

详细咨询请看帮助

假设你自己创建的component  路径为    component.mycanvas

使用方法如下
None.gifvar optionClass:Object = getDefinitionByName("component.mycanvas"as Object;
None.gif                    var optionCanvas:Canvas 
= new optionClass() as Canvas;
None.gif                    var iComponentOption:IComponentOption 
= IComponentOption(optionCanvas);
注意 getDefinitionByName(name: String )  中的name 要用完整的路径 不然不认得

对于实际应用的时候我建议声明一个接口 让你的组件都继承一个公开的接口  可以让外部容易使用(今天不多讨论)

然后编译 运行   哈哈哈  告诉你不成功 会出错的 提示你component.mycanvas没有定义


其实flex挺怪的  但是我大概知道什么原因 就是当某一个class 或者 component 没有被系统中任何东西使用
则flex编译的时候是不会把这个东西编译进去的 在运行的时候 flex是不会帮你编译代码的

所以就造成了  没有定义的错误

怎么办  很简单  让有一个东西使用它呗 
只要随便一个地方 写上 private var xx:mycanvas;
大功告成   其实这样反射的意义就没有了  如果我动态添加功能 还要去进程中申明一下 吐血啊







转载于:https://www.cnblogs.com/qkaibo/archive/2007/07/27/832947.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值