Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Непонятка со слушателями мыши (http://www.flasher.ru/forum/showthread.php?t=105563)

wvxvw 18.12.2007 15:33

Непонятка со слушателями Key
 
Нужно отключать / включать всех слушателей Key. Код ниже почему-то срабатывает всего 1 раз =/ ....
Код:

public static function createAlert(_type):String {
                ....
                __mouseListeners = [];
                for(var q:Number = 0; q<_global.Key["_listeners"].length; q++){
                        __mouseListeners.push(_global.Key["_listeners"][q]);
                        _global.Key.removeListener(_global.Key["_listeners"][q]);
                }
                _global.Key["_listeners"] = [];
                trace("Listeners removed "+__mouseListeners+" : "+_global.Key["_listeners"].length);
        }
        public static function deleteAlert(s:String):Void {
                for(var q:Number = 0; q<__mouseListeners.length; q++){
                        _global.Key.addListener(__mouseListeners[q]);
                }
                trace("Listeners added "+_global.Key["_listeners"]+" : "+_global.Key["_listeners"].length);
                ....
        }


etc 18.12.2007 15:37

Ну нахрена лезть в массив слушателей мыши, да ещё копировать таким мегаизвращенским способом?

wvxvw 18.12.2007 15:44

Ой, сорри, поправил, не мыши, а кнопки.
__etc: А откуда мне еще узнать сколько слушателей подписано на ее события?
Способов уже перепробовал... пробовал удалять/перезаписывать onKeyDown - эффект такой же...

etc 18.12.2007 15:45

Если нужно знать, сколько этих слушателей, значит налицо ошибка проектирования, вот что я могу лишь сказать.

Molecula 18.12.2007 16:42

А почему удаляете так:
Код:

__mouseListeners.push(_global.Key["_listeners"][q]);
_global.Key.removeListener(_global.Key["_listeners"][q]);

А не так:
Код:

__mouseListeners.push(_global.Key["_listeners"][q]);
_global.Key.removeListener(__mouseListeners[q]);

Ну, и соответственно добавляете слушателей.

wvxvw 18.12.2007 17:08

Пробовал и так и так, эффект одинаковый.
В итоге переделал совсем - подписал слушателей клавиш на открытие/закрытие алерта, и в онКейДаун ихнем поставил соответствующую проверку. Хотя по-прежнему интересно, почему первый вариант не работал.


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

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