0

CustomEvent の作成時に奇妙なエラーが発生します。拡張された Event では Event プロパティにアクセスできないようです。

package 
{
    import flash.events.Event;
    public class CustomEvent extends Event
    {

        //public static const COMPLETE:String = 'complete';

        private var _assetName:String;
        public function get assetName ():String
        {
            return _assetName;
        }
        public function set assetName ( aname:String ):void
        {
            _assetName = aname;
        }

        public function CustomEvent (type:String, bubbles:Boolean = false, cancelable:Boolean = false)
        {
            super (type, bubbles, cancelable);
        }

        public override function clone ():Event
        {
            return new CustomEvent(type, bubbles, cancelable) as Event;
        }
    }
}

するとき:

myObj.addEventListener(CustomEvent.COMPLETE, objLoaded);

COMPLETEが存在しないというエラーが表示されます...わかりました、場所に設定すると、CustomEventをEventに変換できないことがわかりました。

ここで何が欠けていますか??

4

3 に答える 3

1

public static const COMPLETE:String = 'complete';static var/const は拡張クラスに転送されないため、これを宣言する必要があります。

CustomEvent から Event への変換に関するエラーは、イベント リスナーがEventnotをリッスンするように設定されていることが原因である可能性がありCustomEventます。

于 2012-06-07T11:56:57.123 に答える
0

ここで取り上げるいくつかの問題があります。

  1. あなたのpublic static const COMPLETE... がコメントアウトされました。なんで?CustomEvent.COMPLETEイベントタイプとして参照する場合に必要です。

  2. 私の精神的な第三の目を使用して、次のように宣言されたイベント リスナーを取得します。

    public completeListener(evt:Event):void
    ...
    

    それはあなたが望むようには機能しません。あなたが必要

    public completeListener(evt:CompleteEvent):Void
    ...
    
  3. コンパイルの問題とは関係なく、カスタム イベントには別の問題があります。clone メソッドはassetNameプロパティを複製しません。次のようなことを試してください:

    public override function clone():Event
    {
        var ret:CustomEvent = new CustomEvent(type, bubbles, cancelable);
        ret.assetName = assetName;
        return ret;
    }
    
于 2012-06-07T19:05:40.040 に答える
0

イベントはどこにディスパッチされ、リスナーのシグネチャはどのように見えますか?

于 2012-06-07T11:18:28.480 に答える