`
nlslzf
  • 浏览: 1030144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

flex的反射有问题,不地道

    博客分类:
  • flex
阅读更多
flex的反射不地道,感觉是个假的

dBParaEdtFrmName="com.yyhy.flex.BaseClass.UserEdtFrm";
             var classReference:Class = getDefinitionByName(dBParaEdtFrmName) as Class;
            
             //一但你得到了类的引用后,就可以这样

             dbParaEditFrm = new classReference() as ParaEdtFrm;

UserEdtFrm是ParaEdtFrm的子类,但是这样的代码报错
说变量UserEdtFrm没有定义,
如果将
dbParaEditFrm = new classReference() as ParaEdtFrm;
改为
dbParaEditFrm = new classReference() as UserEdtFrm;
就没有问题,那还叫啥反射啊
不知道是不是我错误的使用了,从adobe内部论坛来看,这个问题大家反应也多,好像都没有得到解决
这几天sdk4出来了,看看是不是搞定了这个问题

---别人也发现的问题
http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=60&catid=585&threadid=1309224&highlight_key=y&keyword1=getDefinitionByName

http://cynergysystems.com/blogs/page/keunlee?entry=reflection_in_actionscript_3_0


http://blog.csdn.net/zinking3/archive/2007/12/03/1914418.aspx


如果我有一千个模块都这么反射,岂不是死了?


分享到:
评论
4 楼 lixinlixin2008 2009-06-06  
必须在代码里面随便带一下,比如:SomeClass
保证flash将其编译进去...
3 楼 matt.u 2009-05-22  
也可以动态载入你需要的swf,然后再反射取得你要的对象。但请确保你的swf中包含你需要的类。
2 楼 lqql 2008-10-06  
很可能是因为如果不引入需要的类,那么这个类就不会编译在SWF中,因为FLEX编译的方式毕竟和JAVA不同,JAVA是编译在文件系统里的,而且不会有大小的限制,而FLEX要编译在SWF里,不可能把没有用的全编译进去!所以他可能不用到的就不编译了!
1 楼 oxromantic 2008-09-27  
如果你要反射,首先你要保证你反射的代码在Flash player的环境中,你可以通过编译到主swf中或者在运行期动态载入,不然flash player环境中没有那个class的,也就不可能找到

相关推荐

Global site tag (gtag.js) - Google Analytics