PDA

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


Котяра
31.10.2007, 23:11
Вопрос абсолютно не праздныЙ:
"Как создать своего слушателя - вернее своё событие"
Имеем переменную _mc.a =0;
Хочу при любом её изменении вызывать функцию

a_onChange=function () {_mc.b=_mc.a}
Есть ли такие события для обычных переменных или всё ограничено предустановленными событиями? как создавать свои события?

etc
31.10.2007, 23:17
addProperty

Котяра
31.10.2007, 23:45
addProperty
Т.е. если в классах, то сеттер..

Хм.. может быть, но идея несколько в другом.

Ведь есть, например в IDE динамическое текстовое поле, в нем параметр var, в нем переменная (пусть будет _mc.a), при изменении которой изменяется text текстового поля.

пусть у меня есть непустой мувик с muvik._x =_mc.a. Так вот как установить слежение за переменной _mc.a
(onEnterFrame не предлагать, т.к. мувиков много)
Идея не делать проверку а вызывать ф-цию присваивания ПО ИЗМЕНЕНИЮ.

etc
31.10.2007, 23:48
watch

Котяра
01.11.2007, 00:17
watch
Уже (еще) лучше))) Будем дальше копать... Хотелось бы вызывать множество ф-ций обработчиков (независимых от _mc.watch("a",...)
Но:За каждым свойством может "наблюдать" только один отслеживающий объект . Повторные вызовы Object.watch() для того же самого свойства заменяют предыдущие отслеживающие объекты.

udaaff
01.11.2007, 01:34
AsBroadcaster, EventDispatcher.

terbooter
01.11.2007, 08:11
o = [];
o.a = 5;
o.watch("a", func);
broadcast = [];
AsBroadcaster.initialize(broadcast);
l1 = [];
l2 = [];
l3 = [];
broadcast.addListener(l1);
broadcast.addListener(l2);
broadcast.addListener(l3);
function func()
{
broadcast.broadcastMessage("onEvent");
}
l1.onEvent = function()
{
trace("l1");
};
l2.onEvent = function()
{
trace("l2");
};
o.a = 10;

etc
01.11.2007, 09:12
terbooter, зачем тебе массивы?

terbooter
01.11.2007, 11:23
А это от лени.
Массив он же тоже объект

etc
01.11.2007, 13:10
Памяти жрет больше.

Котяра
02.11.2007, 00:48
Сенки за всё.. просто как-то со слушателями проблемы..именно концепцию догнать.. вроде в чистом с++ этого не было, а ООП я с него изучал (давно правда, но все понятия очень живо отложились)