Я развиваю в 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 не удаляет символ в текстовом поле, но похоже, что он запускает какое-то событие.
Есть ли способ отслеживать события по мере их возникновения?
Есть ли способ увидеть, какие прослушиватели прослушивают?
Как я могу отладить эту проблему?
Павла
Обнаружено, что если я выйду из окна веб-браузера/флеш-памяти, а затем вернусь, backspace работает так, как должно. –
Очень странно. Итак, я понимаю, что у вас есть TextField в TabNavigator? Просто дикая догадка, но попробуйте установить для свойства historyManagementEnabled значение TabNavigator равным false. Вы тестируете флеш-плеер или браузер? Если это браузер, вы попробовали его с другим браузером? – Philarmon
Philarmon Пожалуйста, измените свой комментарий на ответ, потому что, похоже, это проблема. –