浏览 5466 次
锁定老帖子 主题:flex的反射有问题,不地道
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-15
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 如果我有一千个模块都这么反射,岂不是死了? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-27
如果你要反射,首先你要保证你反射的代码在Flash player的环境中,你可以通过编译到主swf中或者在运行期动态载入,不然flash player环境中没有那个class的,也就不可能找到
|
|
返回顶楼 | |
发表时间:2008-10-06
很可能是因为如果不引入需要的类,那么这个类就不会编译在SWF中,因为FLEX编译的方式毕竟和JAVA不同,JAVA是编译在文件系统里的,而且不会有大小的限制,而FLEX要编译在SWF里,不可能把没有用的全编译进去!所以他可能不用到的就不编译了!
|
|
返回顶楼 | |
发表时间:2009-05-22
也可以动态载入你需要的swf,然后再反射取得你要的对象。但请确保你的swf中包含你需要的类。
|
|
返回顶楼 | |
发表时间:2009-06-06
必须在代码里面随便带一下,比如:SomeClass
保证flash将其编译进去... |
|
返回顶楼 | |