如何抑制「访问可能未定义属性」错误?跨SWF调用类问题
解决两个独立嵌入SWF间类调用的编译错误问题
以下是不用Loader类的几种解决方法:
添加空存根类
在second.swf的项目中创建与first.swf里Base类完全同名(包括包路径)的空类,仅声明需要调用的静态方法即可。编译时编译器会识别这个类定义,不会报错;运行时因为first.swf已加载,会自动使用真实的Base类。
示例代码:// 包路径必须和first.swf中的Base类完全一致 package { public class Base { public static function doSomeStuff():void { // 空实现,仅用于编译通过 } } }使用运行时动态获取类
通过getDefinitionByName方法在运行时动态获取Base类,绕开编译阶段的检查。这种方式不需要额外的类定义,直接在调用处修改代码:import flash.utils.getDefinitionByName; // 注意这里的类名要包含完整包路径,如果Base有包的话 var BaseClass:Class = getDefinitionByName("Base") as Class; if (BaseClass) { BaseClass.doSomeStuff(); }编译时引入外部类定义
如果能获取到first.swf对应的源文件或SWC库,在编译second.swf时,将包含Base类的源文件目录或SWC添加到编译器的**外部类路径(External Library Path)**中。这样编译时编译器能找到Base类的完整定义,直接通过正常语法调用即可。
内容的提问来源于stack exchange,提问作者GulgDev
相关产品推荐
相关产品推荐

