我如何找到在 AS3 中劫持退格键的是什么?

How can I find what is hijacking backspace key in AS3?

我正在使用 flexbuilder 3 进行开发。我正在使用 Flex 3.5 进行编译。

有东西劫持了我的退格键,我找不到罪魁祸首。在文本字段中,当我键入一些字符然后尝试键入退格键时,会触发一些事件来尝试更改屏幕上其他位置的选项卡导航器。这会强制 "show event",在显示代码中,我抛出一个显示

的堆栈跟踪
Error: StackTrace
at OrderInq/populate_Addresses()[I:\AmeriLawyerNew\src\OrderInq.as:669]
at OrderInq/__tab_address_show()[I:\AmeriLawyerNew\src\OrderInq.mxml:83]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9440]
at mx.core::UIComponent/setVisible()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1913]
at mx.core::UIComponent/set visible()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1881]
at mx.containers::ViewStack/updateDisplayList()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\containers\ViewStack.as:864]
at mx.containers::TabNavigator/updateDisplayList()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\containers\TabNavigator.as:626]
at mx.core::UIComponent/validateDisplayList()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:6362]
at mx.core::Container/validateDisplayList()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\core\Container.as:2720]
at mx.managers::LayoutManager/validateDisplayList()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:622]
at mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:695]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8744]
at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8684]

我的下一次尝试是创建一个击键事件监听器,例如;

    this.addEventListener(KeyboardEvent.KEY_DOWN, interceptKey, true);
private function interceptKey(evt:KeyboardEvent):void
{  
    if(evt.keyCode == 8) // Backspace key
    {
        trace("Main Backspace key detected");
    }
    trace('Main evt.keyCode=' + evt.keyCode);
}

这会正确显示每个击键,但退格键除外。当我在跟踪中键入退格键时,没有任何显示。退格键不会删除文本框中的字符,但它似乎触发了一些事件。

有没有办法在事件发生时对其进行跟踪?

有没有办法查看监听器正在监听哪些事件?

我该如何调试这个问题?

保罗

所以我知道你在 TabNavigator 中有你的 TextField ?只是一个大胆的猜测,但请尝试将 TabNavigator 上的 historyManagementEnabled 属性 设置为 false。 TabNavigator 正在捕捉一些关键事件。