Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как заблокировать обработчики событий? (http://www.flasher.ru/forum/showthread.php?t=166707)

ch3cker 05.09.2011 13:52

Как заблокировать обработчики событий?
 
День добрый)
Пользователь нажимает на кнопку ему показывается прелоадер и делается запрос на сервер который потом обрабатывается слушателем.

Как сделать чтобы другие кнопки не реагировали пока не обработался этот запрос?
Кнопок вокруг полно и все они отправляют разные запросы на этот же сервер а лишняя нагрузка ни к чему.

Как бы вы решили такую проблему?
Спасибо

Genzo 05.09.2011 14:08

Вешайте слушатели на те кнопки только после ответа или введите переменную connected или как нить так и проверяйте ,что если она false ничего не слать , а после ответа от сервера 1 , ставьте ей true

goodguy 05.09.2011 14:54

После нажатия кнопки, добавить поверх всего спрайт с невидимой заливкой, который перекроет все кнопки. И по завершению загрузки убирать его.
Этот вариант будет разумнее кучи слушателей на всем подряд.
Лично я бы решил эту проблему именно так.

Astraport 05.09.2011 15:14

Только вариант goodguy.
При варианте Genzo юзер получит много негатива не получая ответной реакции от своих действий.

nOobCrafter 05.09.2011 15:18

а если повесить обработчик на стейдж, на капчуре фазу и делать:
Код AS3:

e.stopImmediatePropagation();

а затем соответственно убирать его.
Простейший пример, на стене оставляем какой либо мувик:
Код AS3:

addEventListener(MouseEvent.CLICK, onC);
stage.addEventListener(MouseEvent.CLICK, onS, true);
 
function onC(e:MouseEvent):void
{
        trace(1111);
}
 
function onS(e:MouseEvent):void
{
        e.stopImmediatePropagation();
        trace(222);
}

goodguy хороший вариант но он забьет вообще все слушатели (ролловеры \ ауты), а не только клики.

ch3cker 05.09.2011 15:25

Всем спасибо, особенно goodguy, все гениальное просто)

alatar 05.09.2011 15:29

В вашем главном классе (или для Stage) во время загрузки ставьте.
Код AS3:

mouseEnabled = mouseChildren = false;

По окончании загрузки ставьте обратно true.

ch3cker 05.09.2011 15:36

alatar, спасибо за подсказку сделал именно так) Для stage правда выдало ошибку, а в главном классе работает.


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

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