【问题标题】:as3 Events - Type Coercion failed?as3 事件 - 类型强制失败?
【发布时间】:2010-11-27 19:03:10
【问题描述】:

我正在将事件从子级发送到父级 swf。它工作正常,直到我使用预加载器 swf 加载父级,然后父级停止从子级获取事件。我现在收到此错误:

TypeError: Error #1034: Type Coercion failed: cannot convert com.company.events::MyCustomEvent@22494251 to com.company.events.MyCustomEvent.
    at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()

这是什么意思?为什么只有当我将主 swf 包装在加载程序中时才会发生这种情况?感谢您的帮助 - 我很绝望!

【问题讨论】:

    标签: flash actionscript-3 events


    【解决方案1】:

    为什么在加载器中包装主 swf 时事件处理会中断?

    它并没有真正“破坏”...更多的是方法和属性为每个 swf 命名空间,以便在您将随机 swf(例如广告)加载到 shell 时不会发生冲突应用程序和混乱随之而来,因为孩子的事件在显示列表中移动时被父母捕获。

    有点像巫术,所以不要担心会让人感到困惑。你可以找到一个很好的概述here

    【讨论】:

      【解决方案2】:

      听起来像是 ApplicationDomain 问题。

      试试这样的:

      public function loadSWF(url:String):void 
      {
          var req:URLRequest = new URLRequest(url);
          var cxt:LoaderContext = new LoaderContext();
              cxt.applicationDomain = ApplicationDomain.currentDomain;
      
          var ldr:Loader = new Loader();
              ldr.load(req, cxt);
      }
      

      【讨论】:

      • 非常感谢。我正在使用 BulkLoader,所以我添加了修改,但它现在可以工作了。你能告诉我为什么吗?我无法理解这个上下文/应用程序域的东西。我之前加载子 swf 就好了 - 为什么将主 swf 包装在加载器中时事件处理会中断?
      • ApplicationDomains 代表不同的类“世界”。当您在外部 SWF 中加载时,它的类通常都存在于与加载它的 SWF 中的类不同的 ApplicationDomain 中。这就是您的原始代码所做的事情,它导致加载的 SWF 中名为“MyCustomEvent”的类被认为是与加载 SWF 中的“MyCustomEvent”完全不同的类,因为每个类都在不同的 ApplicationDomain 中。 CodedSignal 的代码使得 SWF 的类应该加载到同一个 ApplicationDomains 中,因此它的 MyCustomEvent 不会被视为不同的类
      • 你拯救了我的一天 IQpierce!谢谢!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      相关资源
      最近更新 更多