swc 的作用 只是 帮助逃过编译期检查。swf才作为真正的类库,其中包含了编译后的代码(类)。但如果,没有相应的swc,类库swf中的类不能在其他类中“显式”地引用(直接通过类名引用,例var f:MyFont = new MyFont())但也可以用 getDefinitionByName(存在与swf类库中的类的类名)方法获取swf类库中类的引用
例如:
com.dtedu.MyFont 这个类被编译到了 一个名为 fontLibrary的swf中。
就可以将 fontLibrary这个swf加载到 需要使用com.dtedu.MyFont类的 swf中。
com.dtedu.MyFont 这个类被编译到了 一个名为 fontLibrary的swf中。
就可以将 fontLibrary这个swf加载到 需要使用com.dtedu.MyFont类的 swf中。
用var fontClass:Class = getDefinitionByName("com.dtedu.MyFont") as Class 的语句获得com.dtedu.MyFont类的引用。
例2:如果 主程序swf 需要 加载 一个子swf,而且主程序 swf中还要 用到子swf中的类。
例2:如果 主程序swf 需要 加载 一个子swf,而且主程序 swf中还要 用到子swf中的类。
这时有两种选择 ,区别主要在编译阶段:
第一种:将 子swf中包含的类 的as文件 加入类路径。
这时在编译主程序swf的时候, 主程序中需要使用的 包含在子swf中的类会被编译到主程序swf 中。
这样。同一个类会同时存在于主程序swf和子程序swf中。这样有一个缺点,那就是如果
子程序swf中被主程序swf使用的类被修改后,主程序swf也要重新编译,这样才能保证主程序swf 和子程序swf中使用的同一个类 的统一。
第二种:在发布 子程序 swf的同时 也同时 发布成swc。
在编译主程序swf的时候,将swc加入类路径(swc路径)
这样。子程序 中的类就不会被 编译到 主程序swf中了。
作为 代码或可视化资源的库swf被加载到主程序swf之后一定要分配一个引用,不然,当被加载进来的资源失去所有引用,就会被回收,使资源不可用了。
在使用 外部加载 的swf中的类定义时,一定不要在 主程序 swf 可以引用到的类路径中 包含与加载的swf中同名的类。这样有时候会发生冲突。****
如果在主程序swf 的文档类中,声明了(以一个类的名字类型注释,此类存在于加载进来的swf中)一个存在于 加载到主程序中的swf中的类的 类变量的 时候,在运行时,flashplayer会 检查 这个用于 注释的类 是否有了实际的定义。如果,在检查时,包含这个用于类型注释的类的swf还没有加载完毕,就会报错:找不到XXX类(用于类型注释的类)的定义。
第一种:将 子swf中包含的类 的as文件 加入类路径。
这时在编译主程序swf的时候, 主程序中需要使用的 包含在子swf中的类会被编译到主程序swf 中。
这样。同一个类会同时存在于主程序swf和子程序swf中。这样有一个缺点,那就是如果
子程序swf中被主程序swf使用的类被修改后,主程序swf也要重新编译,这样才能保证主程序swf 和子程序swf中使用的同一个类 的统一。
第二种:在发布 子程序 swf的同时 也同时 发布成swc。
在编译主程序swf的时候,将swc加入类路径(swc路径)
这样。子程序 中的类就不会被 编译到 主程序swf中了。
作为 代码或可视化资源的库swf被加载到主程序swf之后一定要分配一个引用,不然,当被加载进来的资源失去所有引用,就会被回收,使资源不可用了。
在使用 外部加载 的swf中的类定义时,一定不要在 主程序 swf 可以引用到的类路径中 包含与加载的swf中同名的类。这样有时候会发生冲突。****
如果在主程序swf 的文档类中,声明了(以一个类的名字类型注释,此类存在于加载进来的swf中)一个存在于 加载到主程序中的swf中的类的 类变量的 时候,在运行时,flashplayer会 检查 这个用于 注释的类 是否有了实际的定义。如果,在检查时,包含这个用于类型注释的类的swf还没有加载完毕,就会报错:找不到XXX类(用于类型注释的类)的定义。