`

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

 
阅读更多

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;
分享到:
评论

相关推荐

    as3反射和将XML转换成对象的类

    `ClassInfo.as` 可能是自定义的一个类,用于封装关于AS3类的元信息。这个类可能会包含获取类名、父类、接口、属性和方法等静态信息的方法。例如,你可以使用`flash.utils.describeType()`函数来获取一个类的详细描述...

    as3场景中MC复制一个或多个

    说明:这个是用来实现已在场景中的Mc复制多个出来,如AS2中可以duplicateMovieClip,AS3...本人就遇到这个问题了,做一个上传图片的系统,当用户要复制操作时就不行,下面是以构造器方法自己做出的方法,望能帮到大家

    第四节 反射的方式加载库里的MC.docx

    这个函数接受一个字符串参数,该参数是类的全名(包括包名),并返回对应的Class对象。如果我们有一个类名为`Mc1`的元件,我们可以通过以下方式获取它的Class对象: ```actionscript var ClassReference:Class = ...

    Flex 反射示例

    Flex反射是Adobe Flex框架中的一个重要特性,它允许在运行时检查和操作类、对象、方法、属性等元数据。在Flex编程中,反射提供了一种动态访问和操作应用程序组件的能力,即使在编译时未知其具体类型的情况下也可以...

    关于As3反射的问题

    2. **describeType()**:`flash.utils.describeType()` 函数是另一个重要的反射工具,它返回一个XML对象,包含了关于指定类、包或变量的详细信息。这个XML包含类的属性、方法、构造函数、事件、主题等信息,非常适用...

    flash actionscript3游戏开发之 1个swf加载另1个swf并调用其中的元件类.rar

    在Flash ActionScript3(AS3)游戏开发中,将一个SWF文件加载到另一个SWF文件并调用其中的元件类是一项重要的技术。这通常涉及到动态内容加载、类的使用以及对象间的通信,这对于创建复杂的游戏场景或者实现模块化...

    调用swf中导出的类,按钮,MC,图片等

    在Flash Professional或Flex Builder中,可以为AS3类选择“Export for ActionScript”选项,这样在编译后的SWF中,该类就会成为一个可访问的符号。一旦类被导出,我们可以通过`Loader`类来加载SWF,并使用`...

    flash资源加载策略

    例如,当加载一个SWF文件时,你可以访问其内容的特定部分,如MovieClip或Sprite。 在资源管理方面,有两种常见的策略: 1. **资源打包成SWF**:这种方法是在FLA文件中导入所有资源,然后导出为一个SWF文件。资源的...

    flex解析json的swc包(entity-flex-v1-02)及例子

    3. **解析JSON**:如果从服务器接收到一个JSON字符串,你可以使用`flash.utils.parseJSON()`方法将其转换为ActionScript对象,然后你可以访问其中的属性和方法。 4. **显示数据**:在Flex界面中显示解析出的JSON...

    Flex启动与初始化

    在这个过程中,Flex 系统会创建一个 SystemManager 对象,该对象是应用程序的入口,负责控制 swf 的加载和启动,也负责划分 Flex 工程显示层级。 在 Flex 启动过程中,SystemManager 会创建一个加载器(Preloader)...

    Use-AS-self.zip_flex

    这是一个强大的SWF文件分析工具,可以帮助开发者查看和理解SWF文件的内部结构。通过它的源代码,我们可以学习如何解析SWF的各个部分,包括标签、数据块等。它通常会解码文件头,然后按照标签顺序逐个处理,解析出...

    as代码

    // 定义一个整型变量num并赋值为6789 ``` #### 数学运算与数字拆分 在提取一个整数各个位上的数字时,可以使用除法和取余操作。示例代码如下: ```as var temp:int = num; // 将num的值复制给temp var a:int = ...

    Flex 开发类的反射

    在提供的示例代码中,定义了一个接口`IPerson`和两个实现类`PersonImplA`与`PersonImplB`。在主程序`MainApp`中,通过一个下拉列表和按钮实现了动态选择并调用不同实现类的功能。具体步骤如下: 1. **定义接口与...

    flex动态菜单(Menubar)

    每个菜单项都可以链接到一个命令或显示一个子菜单。在Flex MXML代码中,可以使用`&lt;mx:MenuBar&gt;`标签来声明Menubar。 2. **XML配置**:为了实现动态填充菜单,我们可以使用XML文件来存储菜单结构和数据。XML文件的...

    网页给swf传递参数的方式【可以用于版本管理】

    `TestVersion.mxml`可能是一个Flex或ActionScript项目,用于测试不同版本的SWF如何接收和处理参数。而`AlwaysNew.php`可能是一个PHP脚本,用于生成或处理动态的SWF加载参数,例如,根据用户请求返回不同版本的SWF或...

    常用AS命令收集速查

    - `nextScene()`:前进到下一个场景。 - `play()`:开始或继续播放动画。 - `prevFrame()`:回放至上一帧。 - `prevScene()`:返回至上一个场景。 - `stop()`:停止当前帧的播放。 - `stopAllSounds()`:停止...

    flash ActionScript.3小技巧

    ActionScript 3 提供了一个简单的方法来实现这一功能: ```actionscript // 更改帧速率为 12 fps stage.frameRate = 12; ``` 此行代码将舞台的帧速率设置为 12 帧每秒(fps)。这对于优化性能或调整动画速度非常...

    FLASH AS3.0 WINDOWS 菜单

    在上述XML中,每个`menuItem`表示一个菜单项,`submenu`则表示下拉子菜单。`label`属性定义了显示的文本,`action`属性对应于在AS3.0中定义的函数,当用户点击菜单项时会被调用。 在Flash AS3.0中实现这个XML驱动的...

    Flex应用程序中嵌入各种类型的资源方法 源码

    - 使用符号链接:将多个资源链接到同一个SWF,减少网络请求。 - 资源压缩:使用工具对资源进行压缩,减小文件大小。 - 懒加载:只有在需要时才加载资源,减轻内存压力。 7. **示例代码**: - 嵌入图片: ```...

Global site tag (gtag.js) - Google Analytics