加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex自定义事件

发布时间:2020-12-15 04:08:53 所属栏目:百科 来源:网络整理
导读:在我们平时写代码时,大家讲求的就是低耦合。 Flex的事件机制就是一种良好的解耦方案。有写过js的同仁会发现flex的事件机制其实跟js还是有一定的相似度的。 下面我们就看看怎么在Flex中自定义事件: 在flex中一个组件广播事件,需要使用dispatchEvent()方法

在我们平时写代码时,大家讲求的就是低耦合。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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读