|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2011
Сообщений: 524
|
как избежать лишнего создания копии объекта?
пусть в главном классе создан экземпляр class1 в котором приуствует слушатель на собственное событие
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.*; public class lentW extends Sprite { public function class1() { addEventListener("myCustomEvent", myCustomEventListener); } function myCustomEventListener(event:Event):void { trace("я услышал событие"); } } } var lnt:class1=new class1(); public function leftArrayClick(e:MouseEvent):void { lnt.dispatchEvent(new Event("myCustomEvent")); как этого избежать? |
|
|||||
ААААААА!! МОИ ГЛАЗА!!!
А если серьёзно, public function class1() это не класс, это функция. Вы видимо совсем запутались. Приводите весь код уж, я плохо понимаю что у вас происходит, второй кусок кода откуда вырван. Чего вы хотите добиться? Изучать архитектурные вещи можно тщательно изучив синтаксис, вы его не знаете, признайте уже очевидное. Прочитайте Колина Мука уже.
__________________
:) |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Речь про экземпляр class1?
Вообще, всё плохо - события не стоит отправлять "кому-то", куда правильней рассылать от своего имени. Если 3 класса - родительский, class1 и class2, то лучше всего перебросить событие через родителя вот так:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Sep 2011
Сообщений: 524
|
все сделано для того, чтобы я мог вещать от одного класа- другому. задача стоит: чтобы один класс мог "сказать" напрямую другому- прими данные такие то и так далее.
как тогда это лучше сделать? Добавлено через 2 минуты без передачи в один класс(в конструктор) ссылки на другой класс, без использования того факта что все события дублируются на всех уровнях иерархии и оценки их через currenttarget чтобы один класс мог сказать другому классу: сделай то то! вот, возьми эти данные. |
|
|||||
Посмотрите на пост Тигры.
И классы в as3 не умеют рассылать события. А их экземпляры, если они наследуют все плюшечки EventDispatcher, да. Короче, экземпляр class1 диспатчит событие, другой экземпляр, который имеет ссылку на этот экземпляр, ловит событие и вызывает хендлер у экземпляра class2, на который в свою очередь тоже имеется ссылка в общем, так сказать, "родителе".
__________________
тут я |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Если Класс1 создал Класс2.
Классу1 нужно сказать что-то Классу2: напрямую дёргаем метод. Класс2 нужно сказать что-то Классу1: Важно: диспатч событий из конструктора делать нельзя, т.к. в принципе на момент выполнения конструктора у объекта ещё не может быть добавлен слушатель.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Sep 2011
Сообщений: 524
|
который имеет ссылку на этот экземпляр
----------- а как получить внутри класса ССЫЛКУ НА ЭТОТ ЭКЗЕМПЛЯР??? вот в чем проблема! |
|
|||||
viktorami
Приведите пожалуйста весь код который вы написали для этого теста, а то сейчас вся помощь строится на догадках. Добавлено через 32 секунды без ссылки нет взаимодействия, нет ничего плохого в передаче ссылок
__________________
:) |
|
|||||
Регистрация: Sep 2011
Сообщений: 524
|
dispatchEvent(new Event('event'))
так не работает! уже пробовал. просто dispatchEvent не работает! должна быть указана его цель targetclass.dispatchEvent(new Event('event')) Добавлено через 1 минуту КорДум вот - сразу видно умного и понимающего человека) об этом и изначально была речь. если так сделать - все работает! но вопрос: получается у меня же class1 уже создан эземпляр - тот самый в котором и слушатель прописан а теперь я вынужден создавать ЕЩЕ ОДНУ ЕГО КОПИЮ КОТОРАЯ БУДЕТ ЖРАТЬ РЕСУРСЫ - ДУБЛЬ КЛАССА как же так??? |
Часовой пояс GMT +4, время: 08:47. |
|
« Предыдущая тема | Следующая тема » |
|
|