添加eventlistener如果在Flex3中更新或更改了Object属性,Air?

时间:2009-11-16 09:16:51

标签: flex actionscript-3 air

我在空中应用程序中工作,我需要知道如何在更新任何对象时添加事件监听器,我该如何实现它。

示例:我有类名车辆,子类是汽车,公共汽车,自行车,滑板车等等,子类也有很多属性,如颜色,型号,等等。

我在Vehicle类中有数组集合和AddChild()方法,我将把子类添加到车辆类。 我需要一个事件监听器,如果在任何子类属性中更新或更改任何属性,它都可以触发,我该如何在Flex3中实现它。

我需要知道,对象中是否有任何更新。

提前致谢

2 个答案:

答案 0 :(得分:4)

您可以做的一件事是为属性创建getter和setter而不是public vars,并让您的类扩展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的扩展类,带有一个额外的字符串来表示哪个属性发生了变化)

然后你可以向车辆添加一个eventlistener,当以这种方式定义的属性发生变化时,它们将调度事件。

答案 1 :(得分:0)

如果您对车辆使用阵列集合,并且如果您按照Amarghosh的建议制作Bindable车辆的属性,那么阵列集合应该抛出UPDATE类型的集合事件。它还告诉您哪些项目(车辆)更新了afaik以及哪些属性已更新。但总的来说,直接绑定到房产更容易,就像Amarghosh说的那样。