一问题:flex在编译期是按需导入类的,如果仅仅使用import,而没有申明则在编译时不会导入此类,这就导致我们使用反射的一个问题:找不到对象。
二原因分析:使用反射时对象名称使用字符串表示,编译器在编译期不会识别。
三解决办法:
1)最常用的方法:import并且声明一个引用
import reflect.Obj01;
private var o:Obj01;
2)建立一个注册类:
package reflect { public class RegisterClass { public function RegisterClass() { } private static var al:Array=new Array(); public static function register(o:Class):void{ RegisterClass.al.push(o); } } }
使用:
RegisterClass.register(reflect.Obj01);
使用时可以放在初始化系统参数的方法中执行;我是将它和registerClassAlias方法包装在一起的