未正确接收IndexChangedEvent属性

时间:2012-08-21 22:22:54

标签: flex actionscript flash-builder

这个让我很困惑。我正在调度我自己创建的IndexChangedEvent,在调度之前设置oldIndexnewIndex属性。当在适当的处理程序中收到事件时,oldIndexnewIndex值将被接收为-1,即使我已经验证它们(使用Alert.show())之前是正确的值被送了。

我正在创建它:

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

3,2参数只是我用于调试的参数,他们应该(并且我已验证他们确实这样做)设置了oldIndexnewIndex属性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。这让我疯狂。有人能让我知道为什么我的事件的属性不会在发送中持续存在吗?

1 个答案:

答案 0 :(得分:2)

只是预感,但听起来好像你是从其他地方派遣IndexChangedEvent,也许是你代码中的另一个监听器。如果您查看事件的documentation,则oldIndexnewIndex属性的默认值均为-1,因此类似以下内容会导致您收到的错误事件:

dispatchEvent(new IndexChangedEvent(IndexChangedEvent.HEADER_SHIFT)); 

您是否尝试在代码库中搜索对IndexChangedEvent.HEADER_SHIFT的引用?