Привет, Рафалрыбакы. [Я нахожусь на собрании и не могу тратить время на вопрос, но подумал, что могу помочь с указателем или двумя:]
Во-первых, целью Canvas является взаимодействие с FocusManager иначе, чем с компонентом, который реализует IFocusManagerComponent. Canvas реализует IFocusManagerContainer, и хотя вы можете выполнить то, что пытаетесь достичь, превратив контейнер в IFocusManagerComponent, я бы избегал этого просто потому, что пытался делать то, что, как мне кажется, команда flex sdk предназначала при использовании внутренних компонентов.
Я думаю, они хотели бы, чтобы вы прослушали FocusEvent в вашем контейнере. По умолчанию FocusEvents всплывает, поэтому вы можете выполнить практически все, что вам нужно, с помощью простого прослушивателя событий.
Примечание. Прослушивание focusOut может привести к путанице с компонентами, которые имеют несколько uicomponents в качестве дочерних элементов, т. Е. Combobox имеет UITextField и Button, поэтому у компонента есть несколько событий FocusOut и FocusIn, происходящих из одного и того же компонента. Ваш спаситель будет (я бы догадался) делать container.contains () для элемента focusManger.getFocus () (приведение его и т. Д.), Чтобы точно установить ваш стиль.
Я просто болтаю, так что если вам нужна некоторая помощь помимо этого, или вы хотели бы узнать больше о том, почему focusIn или focusOut evt отправляются, когда они отправляются - я был бы рад объединить некоторый код для Вы и объясните, почему тип события ловится. Лучше всего сделать это (чтобы соответствовать рекомендациям по Flex SDK) - использовать прослушиватель событий из контейнера, а не бороться с компонентом, который одновременно является IFocusManagerComponent И IFocusManagerContainer. Может запутаться.
Надеюсь, это поможет. Удачи,
Джереми