【问题标题】:VerifyError: Error #1053: Illegal override of addEventListenerVerifyError:错误 #1053:非法覆盖 addEventListener
【发布时间】:2013-08-31 22:54:04
【问题描述】:

我收到以下错误:

VerifyError: Error #1053: Illegal override of addEventListener in    
some.path.to.my.CustomObject

这通常在版本不同时尝试加载 swf/swc 时发生,但通常使用自定义库,而不是像 addEventListener 这样的 flash 方法。我的库处于相同的 AIR SDK 3.8 修订版,顶级应用程序具有相同的版本。我最初使用的是 3.4,但升级到 3.8 认为它可能会有所帮助,但它没有。我还更新了 Flash Player 到 11.8,没有区别。

它抱怨的CustomObject 在它的类或任何基类中没有addEventListener 覆盖。基类也是自定义的,它们不是从 Flash 类派生的。我使用的是 Flash Builder 4.7。

我无法编译,也不知道如何解决这个问题,不胜感激。

【问题讨论】:

  • 如果下面的答案没有帮助,请尝试向我们展示代码...
  • 谢谢苏尼尔。下面的答案之一确实有帮助,解决方案嵌入在 cmets 中,它是父级中的 [Bindable] 标签。

标签: actionscript-3 actionscript air adobe flash-builder


【解决方案1】:

更改自定义对象的包名称,以及涉及的任何方法。如果与原始命名空间的错误相同的错误仍然存​​在,那么您的库中有预编译的代码需要删除。您可能必须重新创建 SWC。 (我仍然不确定您要导入哪些库,请注意不要在发布设置中意外导入库)

一种可能性是您没有意外导入正确的对象:例如 class this.package.here.BouncingBall 但实际上正在导入 fl.events.animations.BouncingBall。

【讨论】:

  • 在 Flash Builder 中,我假设重新创建 swc 是通过 Project->Clean... 我还手动将它们从构建路径中删除。 CustomObject 中没有代码,除了基类。当我删除基类时,问题就消失了——但是当我将基类设为空时,问题仍然存在,让我认为这是基类共存的问题——但搜索似乎没有找到另一个.
  • 好的,解决的是父类和子类中有一个[Bindable],当从父类中删除[Bindable]时,它工作正常吗?
  • 我想我以前见过这个,但已经有几年了。为了方便起见,我建议远离 [可绑定]。如果不进行测试,我怀疑只要在同一个属性上为超类和子类使用 [bindable] 时,就会出现此错误。这符合您的发现吗?
  • 是的 - 正确。抱歉,刚刚看到您的评论,抱歉回复晚了。
【解决方案2】:

这可能会有所帮助。当您加载外部 swf 时,它可能包含一些与父 swf 冲突的类定义,因此您可以为加载的子 swf 使用不同的域。

var appDomainA:ApplicationDomain = new ApplicationDomain(); 

var contextA:LoaderContext = new LoaderContext(false, appDomainA); 
var loaderA:Loader = new Loader(); 
loaderA.load(new URLRequest("application2.swf"), contextA);//application2.swf is you external swf

此代码和示例可以在此页面中找到application domain

【讨论】:

  • 我只有一个 swf - 我没有加载外部 swf。我有两个库,它们是构建路径的一部分。
  • 这个解决方案比公认的答案更普遍。
【解决方案3】:

发现另一个情况——在基类中,有时通过getter访问基类中的局部变量会导致这个问题。这似乎是随机的,并不总是发生。

所以不是

protected var __someVar:int;

public function get someVar():int{
  return __someVar;
}

public function addOneToSomeVar():int{
  return someVar + 1; //using local getter - caused VerifyError #1035
}

protected var __someVar:int;

public function get someVar():int{
  return __someVar;
}

public function addOneToSomeVar():int{
  return __someVar + 1; //using local variable
}

这并不总是一致的。我在使用其他 getter 函数时没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多