Просмотр полной версии : Как разослать событие всем инстанциям одного класса?
mushi_mushi
19.06.2006, 19:11
Как разослать событие всем инстанциям одного класса?
Или одно событие одна реакция? Может быть цепной механизм?..
Но хочется не цепной, а параллельный.
Это общая формулировка. Частный случай:
Есть меню. Каждый элемент меню - экземпляр класса, обрабатывающего события и рутину. onRollOver меню загорается, и не должно гаснуть, пока не загорится другое меню.
Запоминать, какое меню подсвечивается в данны момент, чтобы его тушить, когда будет гореть другое - не хочу, т.к... не знаю почему, из спортивного интереса.
NeZnayKa
19.06.2006, 20:17
_root.lastClickedBut = null;
function switchBtn(){
_root.lastClickedBut.туши
_root.lastClickedBut = this;
_root.lastClickedBut.зажигай
}
for (awr=1; awr<5; awr++){
_root["b" + awr].onRelease = switchBtn;
}
p.s.кто то где то написал этот простенький код
AsBroadcaster
Или EventDispatcher
Мне кажеться то что хочет сделать автор, нужно сделать через некий менеджер, который будет получать события и форвардить их тем кому нужно.
да пусть всем инстансам класса и шлет, но с параметром на кого наехали:
class But extends MovieClip{
static var broadcaster={};
public function But(){
if(!broadcaster._listeners)AsBroadcaster.initialize(broadcaster);
broadcaster.addListener(this);
}
function onRollOver(){
broadcaster.broadcastMessage("changeState",this);
}
function changeState(but:MovieClip){
gotoAndStop(but==this?2:1);//если, например, в мувике два кадра
}
}
mushi_mushi
20.06.2006, 13:24
...нужно сделать через некий менеджер, который будет получать события и форвардить их тем кому нужно.
Да, теперь я именно так себе это и представляю ;)
2silin: Static... не понимал и не использовал. Спасибо)
И вообще!.. Это именно то, что нужно.
Homo Sapiens
21.06.2006, 02:28
Посмотри здесь (http://dotsite.ru/solutions/patterns/observer/)
mushi_mushi
21.06.2006, 13:24
Homo Sapiens, Спасибо - всегда знал, что все велосипеды уже изобрели.
Там (http://dotsite.ru/solutions/patterns/observer/) - шаблон - реализует тот же принцип, что и код от silin, за исключением, что код от silin работает именно в рамках объектов одного класса (что и требовалось).
А тот шаблон (http://dotsite.ru/solutions/patterns/observer/) - это реализация типа "клиент-сервер"... я писал о "клиент-сервере" с досадой - т.к. он не совсем правильно реализует то, что я хотел, но кто-то стер это сообщение ;.)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.