Flex自定义事件

在我们平时写代码时,大家讲求的就是低耦合。Flex的事件机制就是一种良好的解耦方案。有写过js的同仁会发现flex的事件机制其实跟js还是有一定的相似度的。

下面我们就看看怎么在Flex中自定义事件:

在flex中一个组件广播事件,需要使用dispatchEvent()方法。此方法定义在flash.events.EventDispatcher中,dispatchEvent()接受一个参数,即要分派的事件对象,分派事件后任何监听该事件的对象都能捕捉到该事件。dispatchEvent()方法接受一个flash.events.Event类的实例作为参数,所以自定义事件类必须继承于flash.events.Event类。同时需要注意的是在自定义事件是必须重写clone()方法(本人还不太了解各种缘由,有知道的人请@本人一下)。

小二上菜(示例代码):

package events
{
	import flash.events.Event;
	
	import valueObjects.Product;
	
	public class ProductEvent extends Event
	{
		public var product:Product;
		
		public function ProductEvent(type:String, product:Product)
		{
			super(type);
			this.product = product;
		}
		
		override public function clone():Event
		{
			return new ProductEvent(type, product);
		}
	}
}
测试代码
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="application_creationCompleteHandler(event)">
	
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			
			import events.UserAcknowledgeEvent;
			protected function button1_clickHandler(event:MouseEvent):void
			{
				var e:UserAcknowledgeEvent = new UserAcknowledgeEvent("userCancel", new Date());
				this.dispatchEvent(e);
			}
			
			protected function acceptHandler(event:UserAcknowledgeEvent):void
			{
				trace(event);				
			}
			
			private function application_creationCompleteHandler(event:FlexEvent):void
			{
				this.addEventListener("userCancel", acceptHandler);
				
			}
			
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<s:layout>
		<s:VerticalLayout/>
	</s:layout>
	<fx:Metadata>
		[Event(name="userAccept", type="events.UserAcknowledgeEvent")]
		[Event(name="userCancel", type="events.UserAcknowledgeEvent")]
	</fx:Metadata>
	<s:Button label="customEvent" click="button1_clickHandler(event)"/>
</s:Application>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值