![]() |
Как получить переменную внутри функции обработчика события?
Доброго времени суток.
Столкнулся с такой проблемой, мне нужно реализовать определенное количество контейнеров (количество контейнеров получаю с сервера), и к каждому контейнеру нужно прицепить свой Timer. Чтобы реализовать это я создаю массив Timer-ов и каждый Timer в функции обработчике должен знать свой индекс. Тут такая проблема как получить свой i в функции обработчике? в данном коде всегда возвращается 10 и это понятно, а как сделать чтобы возвращался свой i, то есть 1, 2, 3 и т.д? Код #1 Код AS3:
Код #2 Код AS3:
или вопрос можно поставить так: Как расширить экземпляр myTimer[i] и добавить в него например свойство id, чтобы выглядело так? Код #3 Код AS3:
Как расширить экземпляр myTimer[i] и добавить в него свойство id? |
Например так
Код AS3:
Код AS3:
|
Третий вариант вполне ничего или напишите класс TimerID унаследованный от Timer, и опишите в нем это свойство.
|
А зачем Вам вообще этот i? Сделате класс контейнера в котором композицией пропишите таймер. Диспатчите TimerEvent от имени контейнера. Подпишите контроллер на этот эвент. Делов-то!
|
Если вы добавили таймер в массив, то у него уже есть индекс - его положение в массиве. Но лучше для таких целей использовать Dictionary, т.как в массив один и тот же таймер можно добавить много раз, а в Dictionary - только 1. Не вижу большого смысла в создании дополнительных классов только ради одного свойства. Кроме того, я бы не стал создавать много таймеров - а один, и подисывался / отписывался от него, когда нужно.
|
Меня вообще не устраивает тот факт, что я должен ради этого создавать отдельный класс который будет расширяться от Timer, то есть (MyTimer extends Timer), можете дать пример где не надо создавать отдельный класс, а прямо в текущем коде (Код #3) можно расширить экземпляр экземпляр myTimer[i] и добавить в него свойство id?
Добавлено через 1 минуту Цитата:
|
>> а прямо в текущем коде (Код #3) можно расширить экземпляр экземпляр myTimer[i] и добавить в него свойство id?
Дык, говорю же, не нужно ничего расширять - вам нужен индекс из массива - Код AS3:
Код AS3:
|
Класс Timer не динамический, поэтому "расширять" экземпляры нельзя. Вообще "расширять экземпляры" и "не устраивает тот факт.." это с ног на головы, должно быть как раз наоборот.
|
Цитата:
|
Жизненных ситуаций очень много и я все же хотел был знать как расширять текущий экземпляр не создавая новый класс.
Например в таком коде: Код AS3:
вот еще раз повторю вопрос: Как в текущей ситуации экземпляру myTimer присвоить новое свойство id не создавая отдельный класс? |
| Часовой пояс GMT +4, время: 14:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.