1

これは本当に私を混乱させます。ディスパッチする前にとプロパティをIndexChangedEvent設定して、自分で作成した をディスパッチしています。イベントが適切なハンドラーで受信されると、送信前に正しい値であることを( を使用して) 確認したにもかかわらず、との値が -1 として受信されます。oldIndexnewIndexoldIndexnewIndexAlert.show()

私は次のように作成しています:

var myEvent:IndexChangedEvent = new IndexChangedEvent(IndexChangedEvent.HEADER_SHIFT, false, false, null, 3, 2);

パラメータは、3,2私がデバッグに使用しているものにすぎず、IndexChangedEvent のプロパティoldIndexとプロパティを設定する必要があります (実際に設定されていることを確認しました)。newIndex次に、次のようにすぐにイベントをディスパッチします。

dispatchEvent(myEvent);

ハンドラーは次のように設定されます。

report.addEventListener(IndexChangedEvent.HEADER_SHIFT, shiftHandler);

そして、ここにハンドラーコードがあります:

private function shiftHandler(event:IndexChangedEvent):void {
    if (event.oldIndex == -1 || event.newIndex == -1) {
        Alert.show("-1 index received");
    }
}

私が狂っていないことを確認するために、これはイベントをディスパッチする前の実際のコードです。

var myEvent:IndexChangedEvent = new IndexChangedEvent(IndexChangedEvent.HEADER_SHIFT, false, false, null, 3, 2);
Alert.show(myEvent.oldIndex + " : " + myEvent.newIndex);
dispatchEvent(myEvent);

ヘッダー (イベントを発生させる) をシフトするたびに、2 つのアラート ボックスが3 : 2表示されます-1 index received。それは私を夢中にさせています。イベントのプロパティがディスパッチ全体で保持されない理由を誰かに教えてもらえますか?

4

1 に答える 1

2

IndexChangedEventただの予感ですが、別の場所、おそらくコード内の別のリスナーから をディスパッチしているように思えます。イベントのドキュメントを見ると、oldIndexおよびプロパティのデフォルト値newIndexは両方とも -1 であるため、次のようなものを受け取ると、誤ったイベントが発生します。

dispatchEvent(new IndexChangedEvent(IndexChangedEvent.HEADER_SHIFT)); 

への参照をコードベースで検索してみましたIndexChangedEvent.HEADER_SHIFTか?

于 2012-08-21T23:51:38.643 に答える