方式一:使用ObjectProxy

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" 
  3.                  creationComplete="init()"> 
  4.     <mx:Script> 
  5.         <![CDATA[ 
  6.             import mx.controls.Alert; 
  7.             import mx.events.FlexEvent; 
  8.             import mx.events.PropertyChangeEvent; 
  9.             import mx.utils.ObjectProxy; 
  10.              
  11.             private var objectProxy:ObjectProxy=new ObjectProxy(); 
  12.             protected function init():void 
  13.             { 
  14.                 objectProxy.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, changeMethod);  
  15.             } 
  16.              
  17.             private function changeMethod(evt:PropertyChangeEvent):void { 
  18.                 if(evt.newValue){ //值有改变 
  19.                   trace("变化的属性名称:"+evt.property.toString()+";发生更改的对象(在监听对象的时候特别有用):"+evt.source+"|旧值:"+evt.oldValue+"|新值:"+evt.newValue); 
  20.                 } 
  21.             }  
  22.              
  23.             public function buttonClick():void{ 
  24.                 objectProxy.name=new Date().getTime(); 
  25.             } 
  26.              
  27.         ]]> 
  28.     </mx:Script> 
  29.     <mx:Button label="点击更改变量的值" click="buttonClick()"/> 
  30. </mx:Application> 

变化的属性名称:name;发生更改的对象(在监听对象的时候特别有用):[object Object]|旧值:null|新值:1363690634734
变化的属性名称:name;发生更改的对象(在监听对象的时候特别有用):[object Object]|旧值:1363690634734|新值:1363690638142
变化的属性名称:name;发生更改的对象(在监听对象的时候特别有用):[object Object]|旧值:1363690638142|新值:1363690648282
变化的属性名称:name;发生更改的对象(在监听对象的时候特别有用):[object Object]|旧值:1363690648282|新值:1363690650001
变化的属性名称:name;发生更改的对象(在监听对象的时候特别有用):[object Object]|旧值:1363690650001|新值:1363690652340

官方地址:http://livedocs.adobe.com/flex/3_cn/mx/events/PropertyChangeEvent.html

方式二:使用BindingUtils 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" 
  3.                  creationComplete="init()"> 
  4.     <mx:Script> 
  5.         <![CDATA[ 
  6.             import mx.binding.utils.BindingUtils; 
  7.             import mx.controls.Alert; 
  8.             import mx.events.FlexEvent; 
  9.             import mx.events.PropertyChangeEvent; 
  10.             import mx.utils.ObjectProxy; 
  11.              
  12.             [Bindable] //必须的,不然检测不到变化 
  13.             public var object:String="123"; 
  14.             protected function init():void 
  15.             { 
  16.                 BindingUtils.bindSetter(changeMethod,this,'object'); 
  17.             } 
  18.              
  19.             private function changeMethod(str:String):void { 
  20.                 trace("changeMethod有变化,变化后的值为:"+str); 
  21.             }  
  22.              
  23.             public function buttonClick():void{ 
  24.                 object=new Date().getTime()+""; 
  25.                 trace("当前时间字符串:"+object); 
  26.             } 
  27.              
  28.             /* 日志输出 
  29.             changeMethod有变化,变化后的值为:123 
  30.             changeMethod有变化,变化后的值为:1364007051727 
  31.             当前时间字符串:1364007051727 
  32.             changeMethod有变化,变化后的值为:1364007052587 
  33.             当前时间字符串:1364007052587  
  34.             */ 
  35.              
  36.         ]]> 
  37.     </mx:Script> 
  38.     <mx:Button label="点击更改变量的值" click="buttonClick()"/> 
  39. </mx:Application> 

官方地址:http://livedocs.adobe.com/flex/3_cn/langref/mx/binding/utils/BindingUtils.html