Здравствуйте!
Итак, имеется небольшое Flex приложение, выполненное как Standalone AIR программа. Приложение представляет собой подобие мастера с набором нескольких страниц и кнопками перехода "Далее", "Назад". Логика работы проста - при нажатии кнопки "Далее" активируется следующее состояние (State) приложения, а при нажатии "Назад", соответственно, предыдущее.
Обработчик нажатия кнопки "Далее" следующий
Код AS3:
protected function onNextButtonClick(event:MouseEvent):void
{
var index:int = getCurrensState();
setState(++index);
}
Отмечу также, что некоторые страницы визарда не могут быть "пролистаны" без заполнения полей и, соответственно, на таких страницах кнопка "Далее" блокируется до наступления события готовности к дальнейшему переходу.
Проблема заключается в том, что при достаточной сноровке
можно нажать на "Далее" два раза подряд и мастер "перескочит" обязательную страницу, до того, как она успела "прогрузиться" и запретить дальнейший переход. Пытался бороться с проблемой подобным образом:
Код AS3:
protected function onNextButtonClick(event:MouseEvent):void
{
if (event.target.enabled)
{
event.target.enabled = false;
var index:int = getCurrensState();
setState(++index);
}
}
И всё равно события приходят дважды (если постараться) и обязательная страница "пролетает". Решение использовать глобальную переменную хотя и помогло, но ИМХО не особенно красиво. Нет ли другого выхода? Например, как то удалять из очереди события повторного нажатия?
P.S.
Flash Builder 4, Flex SDK 4.1.0, AIR SDK 2.5
Спасибо.