自定义事件的简单应用

1、创建自定义事件类

自定义事件类继承Event或者Event子类

package com.ms.bookEvent
{
	import flash.events.Event;
	
	public class CartEvent extends Event
	{
		public var isAdd:Boolean;
		public var book:Object;
		public static const ADD:String = "ADD";
		public function CartEvent(type:String,_book:Object,_isAdd:Boolean)
		{
			isAdd = _isAdd;
			book = _book;
			super(type);
		}
		
		override public function clone():Event
		{
			return new CartEvent(type,book,isAdd);
		}
		
		override public function toString():String
		{
			return formatToString("CartEvent","book","isAdd");
		}
	}
}

    CartEvent类继承Event,包括isAdd和book两个成员变量.定义一个常量ADD表示事件类型.重写构造方法,将isAdd与book加入进去.创建自定义事件需要重新close和toString方法,重新toString时候可以使用formatToString方法,该方法的第一个参数是自定义事件的事件名称,后面的参数是指成员变量的名称.


2、创建自定义组件分发事件

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%">
	<mx:Style>
		.myCheckBox{
			color:#ff0000;
		}
	</mx:Style>	
	<mx:Script>
		<![CDATA[
			import com.ms.bookEvent.CartEvent;
			protected function addCart(event:MouseEvent):void
			{
				this.parentApplication.dispatchEvent(new CartEvent(CartEvent.ADD,data,cart_check.selected));
			}
		]]>
	</mx:Script>
	
	<mx:CheckBox click="addCart(event)" x="10" y="0" label="购买" id="cart_check" styleName="myCheckBox" />
</mx:Canvas>

该组件是一个复选框,点击复选框后将分发CartEvent事件,向事件传递参数


 3、创建应用监听事件

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" creationComplete="init(event)">
	<mx:Script>
		<![CDATA[
			import com.ms.bookEvent.CartEvent;
			
			import mx.events.FlexEvent;
			//
			protected function init(event:FlexEvent):void
			{
				this.addEventListener(CartEvent.ADD,addEventHandler);		
			}
			
			private function addEventHandler(event:CartEvent):void
			{
				if(event.isAdd){
					this.arrCol.addItem(event.book);
				}else{
					this.arrCol.removeItemAt(arrCol.getItemIndex(event.book));
				}
			}
			
		]]>
	</mx:Script>
	<mx:Model id="books">
		<datas>
			<book>
				<id>0</id>
				<name>Flex教程1</name>
				<author>董宏伟</author>
				<date>2006年</date>
			</book>
			<book>
				<id>1</id>
				<name>Flex教程2</name>
				<author>董宏伟</author>
				<date>2007年</date>
			</book>
			<book>
				<id>2</id>
				<name>Flex教程3</name>
				<author>董宏伟</author>
				<date>2008年</date>
			</book>
		</datas>
	</mx:Model>
	<mx:ArrayCollection id="arrCol" />
	<mx:VBox width="100%" height="100%">
		<mx:DataGrid dataProvider="{books.book}" width="700" height="300">
			<mx:columns>
				<mx:DataGridColumn headerText="书名" dataField="name" />
				<mx:DataGridColumn headerText="作者" dataField="author" />
				<mx:DataGridColumn headerText="出版日期" dataField="date" />
				<mx:DataGridColumn width="80" textAlign="center" headerText="购买" itemRenderer="com.ms.components.SendEvent" />
			</mx:columns>
		</mx:DataGrid>
		<mx:Text text="您购买的书籍如下所示:" fontSize="12" />
		<mx:List width="390" dataProvider="{arrCol}" labelField="name" >
			
		</mx:List>
	</mx:VBox>
</mx:Application>

         主程序定义一个Model来存放数据,定义一个DataGrid列表显示该数据,DataGrid最后列使用itemRenderer属性渲染指向创建的复选框组件.创建ArrayCollection存放选中的数据,显示在List中.

        在主程序初始化的时候执行creationComplete对应的方法,该方法添加对CartEvent事件的监听,当执行该事件的时候就会触发addEventHandler方法中的内容.

        该实例主要参考<<Flex3.0程序开发技术详解>>书中的例子,希望对学习这方面的有所帮助.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itmrl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值