0

DispatchEvent() をオーバーライドしようとしていますが、Flash IDE では成功しません。メソッドに関するAdobeドキュメントを確認すると、次のようになります。

override function name()

Grant Skinnerが示しているように、これは一般的かつ簡単に実行できます。

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

Google で徹底的に検索すると、クラス ファイルで正常に使用されているこの構文が繰り返されますが、タイムライン コード内でネイティブに 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

拡張するクラス(基本クラス)のクラスメソッドのみをオーバーライドできます。
これは、継承に関する規則に従います。
クラスを拡張すると、そのすべてのメソッドを継承します。メソッドをオーバーライドすると、そのメソッドを再構築できます。メソッドへのアクセスとオーバーライドは、2つの異なるものです。

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 に答える