如何在AS3中找到劫持退格键的内容?

时间:2015-06-26 19:50:07

标签: actionscript-3 flash flex actionscript flexbuilder

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

有些东西正在劫持我的退格键,我无法找到罪魁祸首。在文本字段中,当我键入一些字符然后尝试键入退格键时,某些事件会触发尝试更改屏幕上其他位置的tabnavigator。这会强制显示事件",在显示代码中,我抛出一个显示的堆栈跟踪

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\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9440]
at mx.core::UIComponent/setVisible()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1913]
at mx.core::UIComponent/set visible()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1881]
at mx.containers::ViewStack/updateDisplayList()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\containers\ViewStack.as:864]
at mx.containers::TabNavigator/updateDisplayList()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\containers\TabNavigator.as:626]
at mx.core::UIComponent/validateDisplayList()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:6362]
at mx.core::Container/validateDisplayList()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\Container.as:2720]
at mx.managers::LayoutManager/validateDisplayList()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:622]
at mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild\3.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\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8744]
at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild\3.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);
}

除退格外,它会正确显示每次击键。当我在跟踪中键入退格时,什么都没有出现。退格键不会删除文本框中的字符,但它似乎确实触发了一些事件。

有没有办法在事件发生时跟踪事件?

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

如何调试此问题?

1 个答案:

答案 0 :(得分:1)

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