问各位大虾们一个反射方面的问题

tonylovelinyu 2010-11-01 02:12:45
我需要利用放射获取一个类的实例是否一定需要存在这个类或者这个类的子类的一个实例?
我现在的情况就好象是一定需要..
...全文
84 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonylovelinyu 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 leemiki 的回复:]
引用 6 楼 tonylovelinyu 的回复:
貌似你没有看清楚我的回答
我现在的情况是.var test:Class=getDefinitionByName("reflect.test.Test") as Class;
在执行这一句的时候就报异常了异常是所获取的类为定义
但是我在这句之前实例化Test的类的话再执行
var test:Class=getDefinitionByNam……
[/Quote]
不好意思!我错了..
tonylovelinyu 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 geweb 的回复:]
必须先声明一下才能反射的到。import编译成swf是找不到的,实例化后才可以
[/Quote]
正解.!谢谢了..麻烦各位了..
...还有件事就是..麻烦各位回答之前先测试下...
看来AS3的放射太废了.
tonylovelinyu 2010-11-02
  • 打赏
  • 举报
回复
....无解......包也导入了..还是一样..
leemiki 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tonylovelinyu 的回复:]
貌似你没有看清楚我的回答
我现在的情况是.var test:Class=getDefinitionByName("reflect.test.Test") as Class;
在执行这一句的时候就报异常了异常是所获取的类为定义
但是我在这句之前实例化Test的类的话再执行
var test:Class=getDefinitionByName("reflect.test.Test") as C……
[/Quote]

我上面说了设置var obj:Test = new test();

自动导入Test编译就通过了!

楼上说的也就是这个道理
geweb 2010-11-01
  • 打赏
  • 举报
回复
必须先声明一下才能反射的到。import编译成swf是找不到的,实例化后才可以
niwenbin416 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 niwenbin416 的回复:]
Java code
import reflect.test.Test
[/Quote]
错了···囧

那是因为你编译的SWF中没有Test这个类所有找不到类型

niwenbin416 2010-11-01
  • 打赏
  • 举报
回复
import reflect.test.Test
tonylovelinyu 2010-11-01
  • 打赏
  • 举报
回复
呵呵!不好意思忘记说!谢谢了!
tonylovelinyu 2010-11-01
  • 打赏
  • 举报
回复
貌似你没有看清楚我的回答
我现在的情况是.var test:Class=getDefinitionByName("reflect.test.Test") as Class;
在执行这一句的时候就报异常了异常是所获取的类为定义
但是我在这句之前实例化Test的类的话再执行
var test:Class=getDefinitionByName("reflect.test.Test") as Class;
就不会报异常了
leemiki 2010-11-01
  • 打赏
  • 举报
回复
var test:Class=getDefinitionByName("reflect.test.Test") as Class;
这句代码没问题

有问题的是var obj=new test();

你没设置obj的类型

改成var obj:Test = new test();就可以了!

至于你说的AS反射废掉问题,呵呵!那是因为你没使用接口!

你可以定义一个公共的接口,每个类都实现它,

Test通过它接口来获取,这样就可以了~~~~
tonylovelinyu 2010-11-01
  • 打赏
  • 举报
回复
恩!恩!我现在就是这么做的...
但是在
var test:Class=getDefinitionByName("reflect.test.Test") as Class;
这一步出现问题..一直都是报我所给定的类未定义的错误.但是我在这之前实例化一个Test类的实例它又不报错了.如果需要这么做才能做到反射的话..那AS3的反射也太废了.完全没有解耦..
leemiki 2010-11-01
  • 打赏
  • 举报
回复
对的!

思路不错!反射机制可以很好的解耦

如果reflect.test.Test通过读取XML获得,再加上接口就更完美了

O(∩_∩)O~ 只是提个建议,楼主有兴趣可以尝试下
tonylovelinyu 2010-11-01
  • 打赏
  • 举报
回复
比如我有一个类是这么定义的

package reflect.test
{
public class Test
{
public function Test()
{
}

}
}

利用放射的代码是这么写的

import flash.util.getDefinitionByName;
var test:Class=getDefinitionByName("reflect.test.Test") as Class;
var obj=new test();

是这么写的么?
passself 2010-11-01
  • 打赏
  • 举报
回复
一定要存在你封装好的类,来接收信息才可以

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧