У меня есть главное приложение (созданное с использованием SDK 4.6), которое загружает дополнительное приложение (созданное с использованием SDK 4.1). Большая часть содержимого в этом состоянии приложения содержится во вложенном приложении, при этом некоторые элементы пользовательского интерфейса в верхнем приложении образуют фрейм (или «HUD») вокруг содержимого вложенного приложения.
В точке, где нет поля ввода текста для получения фокуса, нажатие табуляции вызовет ужасный сбой Flash Player с ошибкой № 1023: произошло переполнение стека.
Вот пример трассировки стека:
Error: Error #1023: Stack overflow occurred.
at mx.managers.systemClasses::MarshallingSupport/get swfBridgeGroup()
at mx.managers.systemClasses::MarshallingSupport/getSWFBridgeOfDisplayObject()
at mx.managers.systemClasses::MarshallingSupport/isDisplayObjectInABridgedApplication()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/keyDownHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers::FocusManager/http://www.adobe.com/2006/flex/mx/internal::keyDownHandler()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocus()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/focusRequestMoveHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocusToParent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/focusRequestMoveHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/setFocusToComponentHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers::FocusManager/setFocusToComponent()
at mx.managers::FocusManager/setFocusToNextObject()
at mx.managers::FocusManager/http://www.adobe.com/2006/flex/mx/internal::keyFocusChangeHandler()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocus()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/focusRequestMoveHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocusToParent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/focusRequestMoveHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/setFocusToComponentHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers::FocusManager/setFocusToComponent()
at mx.managers::FocusManager/setFocusToNextObject()
at mx.managers::FocusManager/http://www.adobe.com/2006/flex/mx/internal::keyFocusChangeHandler()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocus()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/focusRequestMoveHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocusToParent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/focusRequestMoveHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/setFocusToComponentHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers::FocusManager/setFocusToComponent()
at mx.managers::FocusManager/setFocusToNextObject()
at mx.managers::FocusManager/http://www.adobe.com/2006/flex/mx/internal::keyFocusChangeHandler()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocus()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/focusRequestMoveHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocusToParent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/focusRequestMoveHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/setFocusToComponentHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.managers::FocusManager/setFocusToComponent()
at mx.managers::FocusManager/setFocusToNextObject()
at mx.managers::FocusManager/http://www.adobe.com/2006/flex/mx/internal::keyFocusChangeHandler()
at mx.managers.marshalClasses::FocusManagerMarshalMixin/moveFocus()
Согласно руководству Adobe по «разработке приложений sandbox» "FocusManager должен работать даже с изолированными, многоверсионными приложениями.
Кто-нибудь когда-нибудь видел это? Есть идеи, что мне может не хватать?
Примечательно:
- Подприложение загружается в SWFLoader, который настроен на использование отдельного ApplicationDomain.
- Мне вообще не нужно поддерживать табуляцию в приложении верхнего уровня, но табуляция должна работать, когда во вспомогательном приложении есть редактируемые текстовые поля. И это работает нормально, когда есть текстовые поля для табуляции.
Любые предложения приветствуются. Спасибо!
tabEnabled
,tabChildren
и т. Д.),FocusEvent
иKeyboardEvent
. - person Sunil D.   schedule 18.12.2012