[转]关于getDefinitionByName的一个奇怪现象

102 篇文章 0 订阅
99 篇文章 0 订阅

http://bbs.9ria.com/viewthread.php?tid=89712&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
 
 
假如M1是我的在flex中导入的一个SWC。
我这样用它当然是没有问题
  1. var m1:M1 = new M1();
复制代码
但是现在我想做一些别的事情。
  1. var A:Class = getDefinitionByName("M1") as Class;
复制代码
问题出来了,flash报错了!!
ReferenceError: Error #1065: 变量 M1 未定义。
好吧。我不知道怎么处理它,但是我没有停止尝试。
我尝试过这样
  1. trace(getDefinitionByName(getQualifiedClassName(M1)));
复制代码
返回的是 [object M1]
看样子我成功了,可是为什么呢?
继续探索
  1. getQualifiedClassName(M1);
  2.                         trace(getDefinitionByName("M1"));
复制代码
返回[object M1]
看到什么了吗?只要在我getDefinitionByName之前,调用一次getQualifiedClassName,不管这个getQualifiedClassName写在什么位置,就没有报错了。
真是百思不得其解,望有人能指点迷津

最佳答案binghe
swc中没有使用过的类和对象都不会被编译到swf中,所以你直接用getDefinitionByName()获取的时候,会报引用错误,因为根本就没这个类。解决办法:在某个空白地方写一下M1,让IDE编译的时候,知道应该把swc中的M1对象编译进去。这时你在其他地方用getDefinitionByName()就行了
 
 
 
 
 
swc中没有使用过的类和对象都不会被编译到swf中,所以你直接用getDefinitionByName()获取的时候,会报引用错误,因为根本就没这个类。解决办法:在某个空白地方写一下M1,让IDE编译的时候,知道应该把swc中的M1对象编译进去。这时你在其他地方用getDefinitionByName()就行了
 
 
 
 
 
 
 
swc中没有使用过的类和对象都不会被编译到swf中,所以你直接用getDefinitionByName()获取的时候,会报引用 ...
binghe 发表于 2011-8-9 11:41 

是这个原因,更好的做法是冬天修改编译参数
做一个xx-config.xml的文件放在工程下,里面内容如下
  1. <flex-config>
  2.    <includes>
  3.        <symbol>com.greencloud.view.ListGuest</symbol>
  4.               <symbol>com.greencloud.view.FindGuest</symbol>
  5.                <symbol>com.greencloud.view.CodeHelpDemo</symbol>        
  6.    </includes>
  7. </flex-config>
复制代码
symbol 标签就是你要引用的mc吃的链接全名,
在flex编译参数里加 load-config+=xx-config.xml;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值