了解事件

先从一个红绿灯例子看起,

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
	<mx:Script>
		<![CDATA[
			private function init():void{
				hbox.addEventListener(MouseEvent.CLICK,eventHandler);
			}
			private function eventHandler(event:Event):void{
				if(event.target is Button){
					lab.text="交通信号为:"+Button(event.target).label;
				}
			}
		]]>
	</mx:Script>
	<mx:VBox width="100%" height="100%" id="vbox">
		<mx:Label text="关闭" id="lab"/>
		<mx:HBox id="hbox">
			<mx:Button label="绿色" id="btnGreen"/>
			<mx:Button label="红色" id="btnRed"/>
			<mx:Button label="蓝色" id="btnBlue"/>
		</mx:HBox>
	</mx:VBox>
</mx:Application>

 

事件的三个要素:

  • 事件源:事件源指的是发生事件的对象。本例中即是三个按钮。
  • 监听器:监听器是一个具体的方法,负责处理事件响应。监听器被注册到某个可以接收到事件通知的对象上。本例中监听器是eventHandler方法,被注册到按钮的父容器hbox上
  • 事件:事件本身就是一个对象。监听器在处理事件的时候,有时候需要知道事件的来龙去脉,比如事件源是谁?发生了什么事情?事件对象中封装了这些信息,本例中,监听器eventHandler方法的参数既是事件对象。

上面的监听器必须解决两个问题:

  1. 如何判断用户点击的是按钮?

        

 if(event.target is Button)

 在hbox上添加了鼠标点击事件,如果此容器中包含有除了Button之外的其它组件,Flash Player也会调用eventHandler,但是监听器是比较聪明的,他会检测事件源是不是按钮,这里的秘密在于event,Event是在事件发生时,有FlashPlayer隐式创建的。Event描述了所发生的事件,event.target is Button检测事件源是否为按钮对象。

  2. 用户按了哪个按钮?

 

     Event对象实例event通过event.target告诉了谁是事件源,继而通过强制类型转换Button(event.target),得到了发生事件源对象,从而获得了他的label属性。

 

讨论下creationComplete

creationComplete事件并不是由用户触发的,Application初始化完毕,FlashPlayer就会自动触发该事件。

如果在as3中为添加creationComplete方法,只需要addEventListenter.add("creationComplete",函数)就可以了。

 上面的事件监听之能传一个参数,如果想传多个参数,请参考事件监听传多个参数这篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值