flex ObjectProxy

ObjectProxy 和PropertyChangeEvent 对于类的属性变动添加监听,特别适合动态类的属性变动的监听。

记录日志处理 

<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.FlexEvent;
			import mx.events.PropertyChangeEvent;
			import mx.utils.ObjectProxy;
			import mx.utils.ObjectUtil;
			import mx.utils.StringUtil;
			private var p:ObjectProxy =null;
			private function application1_creationCompleteHandler():void
			{
				 p= new ObjectProxy(btn);
				p.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateHandler);
			}
			
			private function updateHandler(event:PropertyChangeEvent):void
			{
				var s:String=StringUtil.substitute("属性被修改('{0}', {1}, {2}, {3}, '{4}')",
					event.kind,
					event.property,
					event.oldValue,
					event.newValue,
					event.target.uid);
					area.text=s+event.source.toString();
			}

			protected function btn_clickHandler(event:MouseEvent):void
			{
				btn.label="show demo";
			}
		]]>
	</mx:Script>
	<mx:Button id="btn" label="demo" click="btn_clickHandler(event)" />
	<mx:TextArea id="area"  x="0" y="30" width="418" height="213"/>

  动态类的监听,一样

package com
{
	import mx.events.PropertyChangeEvent;
	import mx.utils.ObjectProxy;
	import mx.utils.StringUtil;
	[Bindable]
	public dynamic class EmployeeRecord 
	{
	}
}

 

import mx.utils.StringUtil;
	import mx.events.PropertyChangeEvent;
	import mx.utils.ObjectProxy;
	import com.EmployeeRecord; 
	private var p:ObjectProxy =null;
private function showProperties():void 
{ 
	var emp:EmployeeRecord = new EmployeeRecord();
	p.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateHandler);
	p.name = "Peter Griffen"; 
	p.age = 22; 
	p.address = "123 St Peter Blvd, #552"; 
	p.city = "Quahog"; 
	p.state = "NY"; 
	p.zip = "02593"; 
	var displayInfo:Function = function ():String 
	{ 
		var out:String; 
		out = "Employee Record:\n"; 
		out += "Name: " + emp.name + "\n"; 
		out += "Age: " + emp.age + "\n"; 
		out += "Address: " + emp.address + "\n"; 
		out += "City: " + emp.city + "\n"; 
		out += "State: " + emp.state + "\n"; 
		out += "Zip: " + emp.zip + "\n"; 
		return out; 
	} 
} 

private function updateHandler(event:PropertyChangeEvent):void
	{
		var s:String=StringUtil.substitute("属性被修改('{0}', {1}, {2}, {3}, '{4}')",
			event.kind,
			event.property,
			event.oldValue,
			event.newValue,
			event.target.uid);
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值