我在空中应用程序中工作,我需要知道如何在更新任何对象时添加事件监听器,我该如何实现它。
示例:我有类名车辆,子类是汽车,公共汽车,自行车,滑板车等等,子类也有很多属性,如颜色,型号,等等。
我在Vehicle类中有数组集合和AddChild()方法,我将把子类添加到车辆类。 我需要一个事件监听器,如果在任何子类属性中更新或更改任何属性,它都可以触发,我该如何在Flex3中实现它。
我需要知道,对象中是否有任何更新。
提前致谢
答案 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说的那样。