4

カスタムItemRendererからカスタムイベントをディスパッチしようとしています

これは私のカスタムイベントです

package events
{
    import customClass.Product;

    import flash.events.Event;

    public class CopyProductEvent extends Event
    {
        public static const COPY_PRODUCT:String = "COPY_PRODUCT";
        public var picked:Prodotti;

        public function CopyProductEvent(type:String, picked:Product)
        {
            super(type);
            this.picked = picked;
        }
    }
}

itemRendererには、次のような関数があります。

        private function sendEvent(o:Product):void
        {
            dispatchEvent(new CopyProductEvent(CopyProductEvent.COPY_PRODUCT,o));
        }

そして、メインアプリケーションにスパークリストがあり、アプリケーションとリスト自体の両方にEventListenerを追加しようとしましたが、呼び出されることはありません...

    this.addEventListener(CopyProductEvent.COPY_PRODUCT,
        function(e:Product):void{
            ...
    });

    list.addEventListener(CopyProductEvent.COPY_PRODUCT,
        function(e:Product):void{
            ...
    });

なぜ?!?どこが間違っているのですか?

関数からのイベントが正しくディスパッチされます...インターセプトできません。

4

1 に答える 1

10

あなたのイベントは泡立っていないようですね。

カスタムイベントコンストラクターにbubbles引数(デフォルトでは)を追加します。false

public function CopyProductEvent(type:String, picked:Product, bubbles:Boolean = true)
        {
            super(type,bubbles);
            this.picked = picked;
        }

AS3でのイベントバブリングに関する優れた説明はここにあります: AS3でのイベントバブリング

于 2012-02-15T12:23:22.553 に答える