0

我正在尝试覆盖 dispatchEvent(),但在 Flash IDE 中没有成功。查看有关该方法的Adob​​e 文档,它应该只是:

override function name()

正如Grant Skinner所证明的那样,这通常很容易执行:

override public function dispatchEvent(evt:Event):Boolean {
    // code here
}

虽然彻底的 google 搜索将重复此语法在 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.

关于这个错误的文档意味着我没有在同名函数前面加上override声明,但显然这是一个谬误,我对解决方案可能是什么感到惊讶。

需要明确的是,我们知道类文件可以工作,但这是一个无关紧要的问题。我们如何override function dispatchEvent()在时间线代码中工作?

4

3 回答 3

1

您只能覆盖您扩展的类(基类)的类方法。
这遵循继承规则。
当你扩展一个类时,你继承了它的所有方法。覆盖方法允许您重新构造该方法。访问一个方法并覆盖它是两件不同的事情。

public class SomethingSomething extends Event{
  public function SomethingSomething ( ):void{
  }
  override public function dispatchEvent(evt:Event):Boolean {
    trace(evt.type);
    return super.dispatchEvent(evt);
  }

}
于 2011-09-01T19:25:42.583 回答
0

dispatchEvent() 是公开的,您的代码默认使用默认命名空间。你需要做覆盖函数 dispatchEvent(evt:Event):Boolean

于 2011-09-01T18:54:47.573 回答
0

1.以下是一个类

    package{
        import flash.display.MovieClip
        public class myClass{
            public function myClass(){
                // constructor code
                trace("this is constructor")
                waitToOverride()//trace this is overrided code of waitToOverride
            }
            static function waitToOverride(){
                //wait to override
                trace("this is original code of waitToOverride")
            }
        }
    }

2.flash IDE中的以下使用。库中的一些对象链接ActionScript class(C):myClass。然后在对象的MainTimeLine中键入以下代码

    function waitToOverride(){
        // this will override myClass's waitToOverride method.
        trace("this is overrided code of waitToOverride");
    }
    waitToOverride()//this is overrided code of waitToOverride

附言。只要去做,你就会明白我的意思。由 Niauwu 编辑 http://blog.yam.com/celearning/article/28409939

于 2013-05-15T09:57:07.747 回答