这个真的让我很困惑。我正在调度IndexChangedEvent
我自己创建的一个,在调度之前设置oldIndex
andnewIndex
属性。当在适当的处理程序中接收到事件时,oldIndex
andnewIndex
值将作为 -1 接收,即使我已经验证它们(使用Alert.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
。这让我疯狂。有人可以让我知道为什么我的事件属性没有在调度中持续存在吗?