2015-06-26 7 views
0

Я развиваю в flexbuilder 3. Я компилирую с Flex 3.5.Как я могу найти, что такое захват ключа backspace в AS3?

Что-то убирает мой ключ назад, и я не могу найти преступника. В текстовом поле, когда я набираю некоторые символы, а затем пытаюсь ввести backspace, возникает какое-то событие, которое пытается изменить 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] 

Моя следующая попытка была создать нажатие клавиши EventListener как;

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); 
} 

Это отображает каждое нажатие клавиши должным образом, за исключением заднего пространства. Когда я набираю backspace в трассировке, ничего не появляется. Backspace не удаляет символ в текстовом поле, но похоже, что он запускает какое-то событие.

Есть ли способ отслеживать события по мере их возникновения?

Есть ли способ увидеть, какие прослушиватели прослушивают?

Как я могу отладить эту проблему?

Павла

+0

Обнаружено, что если я выйду из окна веб-браузера/флеш-памяти, а затем вернусь, backspace работает так, как должно. –

+0

Очень странно. Итак, я понимаю, что у вас есть TextField в TabNavigator? Просто дикая догадка, но попробуйте установить для свойства historyManagementEnabled значение TabNavigator равным false. Вы тестируете флеш-плеер или браузер? Если это браузер, вы попробовали его с другим браузером? – Philarmon

+0

Philarmon Пожалуйста, измените свой комментарий на ответ, потому что, похоже, это проблема. –

ответ

1

Так я понимаю, у вас есть TextField в TabNavigator? Просто дикая догадка, но попробуйте установить для свойства historyManagementEnabled значение TabNavigator равным false. TabNavigator догоняет некоторые ключевые события.