Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.02.2011, 14:03
alexg вне форума Посмотреть профиль Отправить личное сообщение для alexg Найти все сообщения от alexg
  № 1  
Ответить с цитированием
alexg

Регистрация: Dec 2010
Сообщений: 12
По умолчанию Предупредить повторное нажатие кнопки

Здравствуйте!

Итак, имеется небольшое 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

Спасибо.


Последний раз редактировалось alexg; 25.02.2011 в 14:08.
Старый 25.02.2011, 15:02
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 2  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
проверять если следующее состояние обязательно, то блокировать при нажатии nextButton
Код AS3:
nextButton.enabled = false;
__________________
Блог, Twitter
Брюзга.

Старый 25.02.2011, 15:10
alexg вне форума Посмотреть профиль Отправить личное сообщение для alexg Найти все сообщения от alexg
  № 3  
Ответить с цитированием
alexg

Регистрация: Dec 2010
Сообщений: 12
Цитата:
Сообщение от mayakwd Посмотреть сообщение
проверять если следующее состояние обязательно, то блокировать при нажатии nextButton
Код AS3:
nextButton.enabled = false;
В том то и дело, что событие повторного нажатия приходит раньше, чем кнопка становится недоступной. Спасает использование глобальной переменной (по тому же принципу), но решение какое то некрасивое. Был бы в языке какое нибудь мьютекс или очередь событий, которую можно очистить...

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
air , events , flex
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.