Форум 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)
-   -   совместное использование Delegate и EventDispatcher (http://www.flasher.ru/forum/showthread.php?t=89659)

etc 07.02.2007 17:47

Дык, это и было предложено. Проблема в том, что ссылка локальная.

Nirth 07.02.2007 17:55

Ну а я и говорю, вынести ссылку из функции в инстанс класса.

Ромастый 07.02.2007 18:33

Цитата:

Сообщение от Nirth
Ну а я и говорю, вынести ссылку из функции в инстанс класса.

Цитата:

Сообщение от __etc
3) Хранить ссылку внутри класса (нерационально)

:rolleyes:

Nirth 07.02.2007 18:38

Ну не знаю почему не рационально в C++\C# хранят в классах.

Ромастый 07.02.2007 18:45

Коли энтих ссылок много - неудобно получается.
Например, ежели ты итерратор делаешь, как в твоем конвеере эффектов.

Nirth 07.02.2007 18:49

ну я в сишарпе сделал себе класс DelegateStorage. который является HashTable (в AS это Object), и по ключу я получаю нужный делегат

myStorage['but1Click']
и в классе соотствественно храню просто инстанс этой коллекции.

Ромастый 07.02.2007 18:57

В хорошо спланированном проекте проблем вообще не возникает.
Но иногда бывает нужно быстро сделать что-то, "прибитое гвоздем".
В этом случае DelegateRemover удобно использовать в качестве "веника", для подчистки всякого мусора, созданного Delegate'ом.

Nirth 07.02.2007 18:58

Я обычно перестраховываюсь просто.

pirrest 19.04.2007 15:06

Цитата:

Сообщение от Ромастый
В порядке теста навешал до двух десятков различных - все работает, удаляется только нужный.
ПРоблемы возникают только при многократном:

А можно просто в addEventListener добавить проверку, нет ли ранее добавленого такого-же листенера, и если он есть, то не добавлять. Проверка аналогична проверке в removeEventListener

etc 19.04.2007 15:44

Да можно это все. У меня есть свой EventDispatcher, который третьим параметром в addEventListener принимает область видимости. Соответственно, проблемы нет.


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

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