PDA

Просмотр полной версии : Как разослать событие всем инстанциям одного класса?


mushi_mushi
19.06.2006, 19:11
Как разослать событие всем инстанциям одного класса?
Или одно событие одна реакция? Может быть цепной механизм?..
Но хочется не цепной, а параллельный.

Это общая формулировка. Частный случай:
Есть меню. Каждый элемент меню - экземпляр класса, обрабатывающего события и рутину. onRollOver меню загорается, и не должно гаснуть, пока не загорится другое меню.
Запоминать, какое меню подсвечивается в данны момент, чтобы его тушить, когда будет гореть другое - не хочу, т.к... не знаю почему, из спортивного интереса.

Madasan
19.06.2006, 20:16
AsBroadcaster

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.кто то где то написал этот простенький код

etc
19.06.2006, 20:39
AsBroadcaster
Или EventDispatcher

Nirth
19.06.2006, 20:59
Мне кажеться то что хочет сделать автор, нужно сделать через некий менеджер, который будет получать события и форвардить их тем кому нужно.

silin
19.06.2006, 21:32
да пусть всем инстансам класса и шлет, но с параметром на кого наехали:
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/) - это реализация типа "клиент-сервер"... я писал о "клиент-сервере" с досадой - т.к. он не совсем правильно реализует то, что я хотел, но кто-то стер это сообщение ;.)