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