Apache flex 未正确接收IndexChangedEvent属性

Apache flex 未正确接收IndexChangedEvent属性,apache-flex,actionscript,flash-builder,Apache Flex,Actionscript,Flash Builder,这个真让我困惑。我正在调度我自己创建的IndexChangedEvent,在调度之前设置oldIndex和newIndex属性。当在相应的处理程序中接收到事件时,oldIndex和newIndex值将作为-1接收,即使在发送之前我已经验证了它们(使用Alert.show())是正确的值 我是这样创作的: var myEvent:IndexChangedEvent = new IndexChangedEvent(IndexChangedEvent.HEADER_SHIFT, false, fals

这个真让我困惑。我正在调度我自己创建的
IndexChangedEvent
,在调度之前设置
oldIndex
newIndex
属性。当在相应的处理程序中接收到事件时,
oldIndex
newIndex
值将作为-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);

每次我移动标题(触发事件)时,我都会得到两个警报框,一个显示
3:2
,另一个显示
-1个已接收索引
。这快把我逼疯了。有人能告诉我为什么我的事件属性没有在分派中持久化吗?

只是一种预感,但我觉得你好像是从其他地方分派
IndexChangedEvent
,可能是代码中的另一个侦听器。如果查看事件的属性,则
oldIndex
newIndex
属性的默认值均为-1,因此类似于以下内容的内容将导致收到错误事件:

dispatchEvent(new IndexChangedEvent(IndexChangedEvent.HEADER_SHIFT)); 

您是否尝试过在代码库中搜索对
IndexChangedEvent.HEADER\u SHIFT
的引用?

向我们显示您的自定义
IndexChangedEvent
@RIAstar的代码,它不是自定义事件,而是自定义事件。当我说我自己创建了它时,我的意思是我通过它的构造函数创建了它(如上所示),对不起。啊哈,我想问你为什么不使用内置事件;)您是否绝对确定正在发送的事件和正在接收的事件是同一个实例?您可以通过在FlashBuilder的调试器视图中查看它们的内存地址来验证这一点。另外,我假设您有一个自定义的头类。可能是在基类中的某个地方捕获并重新修补了事件?我正在使用其他内部swc库,所以实际上可能就是这样。我将尝试创建自己的自定义事件来测试这一点(也感谢您的更新)。这是我的错误,现在更正。根据您对该问题的描述,我几乎可以肯定,同一事件被发送了两次,这可能是导致您手动发送事件的操作的结果。Flex框架是否可能因为该操作而调度事件?您是正确的。我使用的一个库(非常愚蠢)捕获事件并将其作为
新的IndexChangedEvent('headerShift')
(是的,甚至没有使用HEADER\u SHIFT常量)。谢谢