Форум 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=206107)

gin_sea 13.01.2014 15:39

Прекращение выполнения всех событий
 
Есть много объектов, которые реагируют на разные события. Возможно ли сделать так, чтобы на определенное время все объекты перестали реагировать на все события, а потом все события восстановились?

ObOs 13.01.2014 16:12

Храните ссылки на объекты в списке, например в массиве. В Ваш "определенный момент" пробегитесь по списку и отписываете все объекты от события.
Код AS3:

for(var i:int = 0; i < objectsList.length; i++){
    var obj:MyObject = objectsList[i];
    obj.removeEventListener("MY_EVENT", eventHandler);
}

Таким же образом можно обратно повесить слушатели.

gin_sea 13.01.2014 16:24

Цитата:

Сообщение от ObOs (Сообщение 1157113)
Храните ссылки на объекты в списке, например в массиве. В Ваш "определенный момент" пробегитесь по списку и отписываете все объекты от события.
Код AS3:

for(var i:int = 0; i < objectsList.length; i++){
    var obj:MyObject = objectsList[i];
    obj.removeEventListener("MY_EVENT", eventHandler);
}

Таким же образом можно обратно повесить слушатели.

Флешка уже сделана, сейчас все объекты заносить в массив очень проблематично.

ObOs 13.01.2014 16:38

Заведите флаг(переменную) отвечающий за ваш "определенный момент". В обработчике события проверяйте флаг если он false выполняем код обработчика, если true выходим из него
Код AS3:

private function eventHandler(e:Event):void{
        if(flag){
                return;
        }
        //handler code....
}

Вам так или иначе вносить изменения в код. Так, я думаю, лучше сделать все по уму, чем выдумывать костыли.

dimarik 14.01.2014 23:23

Цитата:

Сообщение от gin_sea (Сообщение 1157109)
Есть много объектов, которые реагируют на разные события. Возможно ли сделать так, чтобы на определенное время все объекты перестали реагировать на все события, а потом все события восстановились?

Возможно. Достаточно понять из-за чего возникают события и перекрыть им кислород.


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

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