PDA

Просмотр полной версии : отслеживание изменения переменной в другом классе


loover
14.08.2009, 04:58
как? пробовал при помощи set/get, но получилось лишь при изменении переменной в классе, содержащем set/get (в основном классе документа).

etc
14.08.2009, 07:40
Один из двух может подписаться на события другого.

loover
14.08.2009, 20:28
etc, можно подробнее?

iflamberg
14.08.2009, 20:34
другой класс, должен в сеттере переменной генерировать событие. Основной класс подписывается на это событие.

loover
14.08.2009, 20:40
iflamberg, можно пример кода или ссылку? никак не могу подружиться с геттерами.

еще такой вопрос. в осноыном классе есть экземпляр другого класса, а в другом классе - экземпляр третьего. третийкласс генерирует событие. можно ли в основном классе его слушать не создавая экземпляр этого класса? или нужно создавать цепочку событий/листенеров?

как лучше передавать классу мувиклип с вложенными клипами если планируется обращение лишь к вложенным клипам? ссылкой на него или ссылками на его детей?

Felicast
14.08.2009, 22:36
можно пример кода
public class A extends EventDispatcher
{
private var _prop:int;
public function get prop():int
{
return _prop;
}
public function set prop(value:int):int
{
_prop = value;
dispathEvent(new Event(Event.CHANGED));
}
}

public class B
{
private var _a:A;

private function aChangedHandler(event:Event):void
{
trace("Свойство _a.prop изменилось");
}

public function B(a)
{
_a = a
if (_a)
{
_a.addEventListener(Event.CHANGED, aChangedHandler);
}
}
}
может где-то опечатался. писал в блокноте:)
еще такой вопрос
second.third.addEventListener......

loover
14.08.2009, 23:56
Felicast, спасибо, разобрался.

поторопился с ответом ). т.е. public function B() обязательно должна иметь а параметрах (скобках) класс а?

как сделать, чтобы измменение переменной в другом классе рагистрировалось лишь в определенный момент? если лишь тогда добавить листенер, то, если событие уже произошло, это ни кчему не приведет. а при добавлении листенера в конструкторе класса функция листенера сработает слишком рано. получается, прийдется запускать таймер?