这个让我很困惑。我正在调度我自己创建的IndexChangedEvent
,在调度之前设置oldIndex
和newIndex
属性。当在适当的处理程序中收到事件时,oldIndex
和newIndex
值将被接收为-1,即使我已经验证它们(使用Alert.show()
)之前是正确的值被送了。
我正在创建它:
var myEvent:IndexChangedEvent = new IndexChangedEvent(IndexChangedEvent.HEADER_SHIFT, false, false, null, 3, 2);
3,2
参数只是我用于调试的参数,他们应该(并且我已验证他们确实这样做)设置了oldIndex
和newIndex
属性IndexChangedEvent。然后我立即发送事件:
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");
}
}
为了帮助确保我不会发疯,这是我在发送活动之前的ACTUAL代码:
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
。这让我疯狂。有人能让我知道为什么我的事件的属性不会在发送中持续存在吗?
答案 0 :(得分:2)
只是预感,但听起来好像你是从其他地方派遣IndexChangedEvent
,也许是你代码中的另一个监听器。如果您查看事件的documentation,则oldIndex
和newIndex
属性的默认值均为-1,因此类似以下内容会导致您收到的错误事件:
dispatchEvent(new IndexChangedEvent(IndexChangedEvent.HEADER_SHIFT));
您是否尝试在代码库中搜索对IndexChangedEvent.HEADER_SHIFT
的引用?