我有一个使用 Flex 4 SDK 编译的纯 Action Script 3 项目。我有一个标准的 Makefile,它会根据需要自动调用 compc、mxmlc 和 asdoc。该项目在我的 Mac OS X 10.4+ 计算机上编译干净,没有错误或警告;但是,当与在 Windows XP(安装了 Cygwin)上开发的同事共享它时,他会得到一个非常大的“不兼容签名”错误列表。为什么他会出现这些错误?签名似乎不兼容。
注意:有问题的签名是“原始”和“导出”,使用如下:
公共接口 AbstractX { 函数原始():对象; 函数导出():对象 }
公共类 ImportX 实现 AbstractX { 公共 ImportX(obj: 对象) { _loadedobj = 对象; _exportobj = obj.export(); } 公共静态函数包装(obj:对象):AbstractX { 变量结果:AbstractX = null; 如果(对象!= null){ if ( obj 是 AbstractX ){ 结果 = obj as AbstractX; }else if ( obj.original() 是 AbstractX ){ 结果 = obj.original() as AbstractX; }别的{ 结果 = 新 ImportX(obj); } } 返回结果; } 公共函数原始():对象{ 返回_loadedobj; } 公共函数导出():对象{ 返回_exportobj; } 私有 var _loadedobj : 对象 = null; 私有变量 _exportobj : 对象 = null; }
公共类 X 实现 AbstractX { 公共函数 X() : 无效 { //... } 公共函数原始():对象{ 返回这个; } 公共函数导出():对象{ 如果(!_export){ _export = new ExportX(this); } 返回_出口; } 私有 var _export : 对象 = null; }
注意:上面的代码是我如何使两个 SWF 文件中使用的 Action Script 3 类在一个 SWF 动态加载另一个 SWF 时解析为同一个类的解决方案的一部分?