我最近将 Flex 项目中的一些代码移植到一个新的纯 AS3 项目中。当我尝试进行 AMF 调用时,收到如下错误消息:
类型错误:错误 #1034:类型强制失败:无法将 Object@5425371 转换为 mx.messaging.messages.ErrorMessage。
没有与错误相关的堆栈跟踪,因此调试很困难。
我尝试了各种方法(检查是否包含了 flex 框架中所有必需的库等),但没有任何效果。
最佳答案
一段时间后,我找到了答案:Flex 在启动时做了一些初始化,如果没有,AMF 类将无法运行。幸运的是,Adobe 已经想到了那些想要从非 flex 项目或 Flash 中使用 AMF 的人,并提供了一种方法来进行 AMF 所需的初始化。
我将这一行添加到我的应用程序的开头,突然所有 AMF 调用都像在我的 Flex 项目中一样工作:
RpcClassAliasInitializer.registerClassAliases();
(是的,我回答了我自己的问题。我没有找到有关此问题的任何博客或搜索结果,所以我在这里分享问题并修复。)
关于flash - 使用来自 Flash 或纯 AS3 项目的 RemoteObject (AMF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8987109/