Отладка фокуса и распространение событий во Flex - PullRequest
2 голосов
/ 18 декабря 2009

У меня есть пользовательский компонент TitleWindow, который зарегистрирован для прослушивания событий клавиатуры от пользователя (чтобы esc закрывал окно, вводил сохранения и т. Д.). Однако в моем тестировании я обнаружил пару случаев, когда мои обработчики событий клавиатуры не запускаются.

Мое лучшее предположение относительно того, почему это происходит, это то, что где-то есть какой-то дочерний компонент, который украл фокус и мешает распространению событий клавиатуры. К сожалению, из-за большого количества компонентов в моем TitleWindow у меня нет хорошего способа узнать, кто украл фокус.

Мой вопрос: есть ли хорошие советы / методы / инструменты для отладки проблем фокуса и распространения событий во Flex? По сути, мне нужно что-то, что скажет мне, кто в данный момент находится в фокусе, а кто обрабатывает событие в любой момент времени ... возможно ли это?

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

Используя Focus Manager , вы можете вызвать getFocus (), и вы получите IFocusManagerComponent , который в данный момент имеет фокус.

Оттуда вы можете определить, какой тип объекта был украден, используя flash.utils.getQualifiedClassName () и действовать соответственно.

Что касается обработки событий в любой момент времени, вы хотите сравнить e.target с e.currentTarget.

0 голосов
/ 08 мая 2015

Я только что обнаружил, что следующий метод может быть очень полезен при отладке проблем фокуса:

private function handleTextInputFocus(event:FocusEvent):void {
  try {
    throw new Error('test');
  } catch (e:Error) {
    trace(e.getStackTrace());
  }
}

Стек может объяснить, почему ввод текста украл фокус у другого компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...