Apache flex 如果对象属性在Flex3中更新或更改,则添加eventlistener,Air?

Apache flex 如果对象属性在Flex3中更新或更改,则添加eventlistener,Air?,apache-flex,actionscript-3,air,Apache Flex,Actionscript 3,Air,我在air应用程序中工作,我需要知道如何在任何对象更新时添加事件侦听器,如何实现这一点 示例:我有类名Vehicle,子类是Car、Bus、Bikes、Scooter等等,子类也有很多属性,比如颜色、型号等等 我在Vehicle类中有数组集合和AddChild()方法,通过这个,我将把,child类添加到Vehicle类中。 我需要一个事件监听器,它可以在任何子类属性中更新或更改任何属性时触发,如何在Flex3中实现这一点 我需要知道,对象中是否有任何更新 提前感谢您可以做的一件事是为属性生成g

我在air应用程序中工作,我需要知道如何在任何对象更新时添加事件侦听器,如何实现这一点

示例:我有类名Vehicle,子类是Car、Bus、Bikes、Scooter等等,子类也有很多属性,比如颜色、型号等等

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

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


提前感谢

您可以做的一件事是为属性生成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是事件的扩展类,带有一个额外的字符串,表示哪个属性发生了更改)


然后,您可以向车辆添加eventlistener,当以这种方式定义的属性发生更改时,车辆将调度事件。

您可以做的一件事是为属性生成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是事件的扩展类,带有一个额外的字符串,表示哪个属性发生了更改)


然后,您可以向车辆添加eventlistener,当以这种方式定义的属性更改时,车辆将调度事件。

如果您为车辆使用数组集合,并且如果您按照Amarghosh的建议使车辆的属性可绑定,那么数组集合应该已经抛出了一个更新类型的集合事件。它还告诉您哪些项目(车辆)已更新,以及哪些属性已更新。但一般来说,直接绑定到属性更容易,就像Amarghosh所说的那样。

如果您对车辆使用数组集合,并且如果您按照Amarghosh的建议使车辆的属性可绑定,那么数组集合应该已经抛出了一个更新类型的集合事件。它还告诉您哪些项目(车辆)已更新,以及哪些属性已更新。但一般来说,直接绑定到属性更容易,就像Amarghosh说的那样。

使用flex,可以使属性可绑定,而不用考虑它。Flex将负责更新您使用mxml分配了可绑定属性的所有属性。不过,这会带来一些开销。使用flex,您可以将属性设置为可绑定的,而不必考虑它。Flex将负责更新您使用mxml分配了可绑定属性的所有属性。不过,这会带来一些开销。在设置值并分派事件之前,setter应该检查值是否已实际更改。否则,您将得到不必要的开销和属性更改的错误指示。在设置值并分派事件之前,setter应该检查值是否已实际更改。否则,您将获得不必要的开销和属性更改的错误指示。