我有一个使用 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 时解析为同一个类的解决方案的一部分?