论坛首页 编程语言技术论坛

flex的反射有问题,不地道

浏览 5466 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-15  
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


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


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

跳转论坛:
Global site tag (gtag.js) - Google Analytics