【发布时间】:2011-09-01 18:41:19
【问题描述】:
我正在尝试覆盖 dispatchEvent(),但在 Flash IDE 中没有成功。复习Adobe docs的方法,应该很简单:
override function name()
正如Grant Skinner 所证明的,这很容易执行:
override public function dispatchEvent(evt:Event):Boolean {
// code here
}
虽然彻底的谷歌搜索会在 Class 文件中成功使用此语法,但在时间线代码中这样做,在 Flash IDE 中本机被证明是不可能的。第一个问题是使用public 会引发错误1114: The public attribute can only be used inside a package.
这很明显,但是在删除它后,运行以下命令(在新 .fla 文件的第一帧上):
override function dispatchEvent(evt:Event):Boolean {
trace(evt.type);
return super.dispatchEvent(evt);
}
导致此错误:1024: Overriding a function that is not marked for override.
Documentation on this error 暗示我未能在同名函数前面加上 override 语句,但显然这是一个谬误,我对解决方案可能是大吃一惊。
明确地说,我们知道类文件可以工作,但这是一个无关紧要的问题。我们如何让override function dispatchEvent() 在时间线代码中工作?
【问题讨论】:
-
您可能无法从时间线代码中做到这一点。您可能必须从时间线代码切换到具有扩展 MovieClip 的“文档类”,而后者又扩展了 EventDispatcher,因此有一个 dispatchEvent 函数可以覆盖。
标签: flash actionscript-3 overriding timeline dispatchevent