【问题标题】:As3 Flash - Coercion Failed Errors Passing Third Party Data Types Swf to SwfAs3 Flash - 将第三方数据类型 Swf 传递到 Swf 的强制失败错误
【发布时间】:2014-10-01 14:14:08
【问题描述】:

我正在制作一个游戏,其中每个屏幕都作为单独的 swf 加载。我正在使用 Greensock 的 LoaderMax 加载 swf,但我认为这不是导致问题的原因。加载 swf 后,我可以设置子 swf 的属性,例如 String 和 MovieClip。但是,我在库路径中有一个第三方库,两个项目的 swc 完全相同。但是,当我尝试传递非系统变量时,它会给出一个错误,基本上是“强制失败:无法将 ThisType 转换为 ThisType”。如果它们是相同的数据类型,为什么编译器要强制它们?我一定是在这里遗漏了什么......

错误:

TypeError: Error #1034: Type Coercion failed: cannot convert package::ThisType@7ffecfe4ba1 to package.ThisType.

at mJackStateMachine/onAskForClient()

at flash.events::EventDispatcher/dispatchEventFunction()

at flash.events::EventDispatcher/dispatchEvent()

这是(简化的)完整处理程序。当我尝试在 swfs 之间传递 ThisType 类型的 var a_thisTypeVar 时,它会中断:

function CompleteHandler(e:LoaderEvent) {

childSwf = LoaderMax.getContent("LoginStateSwf").rawContent;

stage.addChild(childSwf);

childSwf.start(_thisTypeVar)

}

请帮忙!如何在 swf 之间传递来自第三方库的 var。我应该可以做到吧?

【问题讨论】:

  • 我认为可能发生的情况是加载的(辅助)SWF 不知道 ThisType 对象类型是什么。这意味着您有一个主 SWF 已知的类型,但加载的(辅助)SWF 不知道该类型。 ThisType 扩展了什么?查看 _thisTypeVar 设置的内容以及 ThisType 通常是什么内容会很有帮助。
  • ThisType 是 playerio.Client,都是 swf 的 import 这个类,并且在构建路径中有相同的 playerio.swc
  • 您是如何构建 SWF 的?如果 playerio.swc 包含在两个 SWF 中,您将有两个相互竞争的 ThisType 定义。将 SWC 作为运行时共享库​​包含在子 SWF 中可能会解决此问题。
  • 嗨,布莱恩。我正在编译来自 flash 专业版的 swf,但所有代码都是在 flash builder 中编写的。 RSL 不适合我,因为我使用的是 flash 播放器,而不是 flex。
  • 您将 swc 包含在相同的类中两次。这似乎是问题所在。您可能需要规划流程,以免 swc 被调用 2 次或更多次。

标签: actionscript-3 flash swfloader coercion type-coercion


【解决方案1】:

试试这个:

LoaderMax.defaultContext = new LoaderContext(true, new ApplicationDomain(ApplicationDomain.currentDomain), SecurityDomain.currentDomain);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多