flex 的component 的表现形式似乎不像我们正常见到的类
如
public class classname{
} 此类
但是依然可以使用反射
首先如何使用反射
flex 提供一个utils
具体位置flash.utils.getDefinitionByName
getDefinitionByName | () | function |
public function getDefinitionByName(name:String):Object
详细咨询请看帮助
假设你自己创建的component 路径为 component.mycanvas
使用方法如下
var optionClass:Object = getDefinitionByName("component.mycanvas") as Object;
var optionCanvas:Canvas = new optionClass() as Canvas;
var iComponentOption:IComponentOption = IComponentOption(optionCanvas);
对于实际应用的时候我建议声明一个接口 让你的组件都继承一个公开的接口 可以让外部容易使用(今天不多讨论)
然后编译 运行 哈哈哈 告诉你不成功 会出错的 提示你component.mycanvas没有定义
其实flex挺怪的 但是我大概知道什么原因 就是当某一个class 或者 component 没有被系统中任何东西使用
则flex编译的时候是不会把这个东西编译进去的 在运行的时候 flex是不会帮你编译代码的
所以就造成了 没有定义的错误
怎么办 很简单 让有一个东西使用它呗
只要随便一个地方 写上 private var xx:mycanvas;
大功告成 其实这样反射的意义就没有了 如果我动态添加功能 还要去进程中申明一下 吐血啊