Добавить eventlistener Если свойство Object обновляется или изменяется в Flex3, Air? - PullRequest
0 голосов
/ 16 ноября 2009

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

Пример: у меня есть имя класса Vehicle, а дочерним классом являются Car, Bus, Bikes, Scooter и т.д.

У меня есть коллекция массивов и метод AddChild () в классе Vehicle. Я добавляю дочерний класс к классу Vehicle. Мне нужен прослушиватель событий, который может запускаться, если какое-либо свойство обновляется или изменяется в каком-либо из свойств дочернего класса, как я могу реализовать это в Flex3.

Мне нужно это знать, происходит ли какое-либо обновление в Объекте.

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 16 ноября 2009

Одна вещь, которую вы можете сделать, это сделать методы получения и установки для свойств вместо публичных переменных и заставить ваш класс расширять EventDispatcher, если это еще не сделано, потому что он расширен из MovieClip, например:

private var _vehicleName:String;
.
.
.
public function set vehicleName(value:String):void {
  _vehicleName = value;
  dispatchEvent(new VehicleEvent(VehicleEvent.propertyChange, "vehicleName"));
}

public function get vehicleName():String {
  return _vehicleName;
}

(VehicleEvent - расширенный класс Event с дополнительной строкой, указывающей, какое свойство изменилось)

Затем вы можете добавить обработчик событий к транспортным средствам, и они будут отправлять события при изменении свойств, определенных таким образом.

0 голосов
/ 16 ноября 2009

Если вы используете коллекцию массивов для транспортных средств и если вы делаете свойства транспортных средств связываемыми, как предлагает Амаргош, то коллекция массивов уже должна вызывать событие сбора типа UPDATE. Он также сообщает вам, какие элементы (транспортные средства) были обновлены, а также какие свойства были обновлены. Но в целом проще напрямую связать собственность, как говорит Амаргош.

...