《事件侦听机制》PPT课件.ppt_第1页
《事件侦听机制》PPT课件.ppt_第2页
《事件侦听机制》PPT课件.ppt_第3页
《事件侦听机制》PPT课件.ppt_第4页
《事件侦听机制》PPT课件.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,第5章 事件侦听机制,1,第5章 事件侦听机制,5.1 AS3的事件侦听机制 5.2 事件侦听的语法结构 5.3 事件类 5.4 常用内建事件 5.5 事件流和默认行为 5.6 综合实例,2,5.1 AS3的事件侦听机制,事件处理系统是交互式程序设计的基础。 可以方便的响应用户输入和系统事件。 基于文档对象模型DOM3 业界标准的事件处理体系架构。 更清楚、强大、高效、直观方便。 不在顶级类范畴,但非常重要。 人机交互、网络加载、异步处理都要用到。,3,1. 点菜的例子,服务生:事件接收者即侦听器(Event Listener),4,客人:事件发送者(Event Dispatcher),点菜,点菜:客人发送的事件(Event),事件包含3条主要内容 事件类型(Type) 点菜,服务生根据事件的不同,作出相应的操作。 事件目标(Target) 事件发送者,如果服务生下单后就不记得是谁点的菜,就糟糕了。 事件数据(Data) 事件所包含的其它信息,比如点菜就是菜的名字,而埋单,则是没具体信息,只是让服务生到柜台取帐单。,5,2. DOM3事件的执行流程,注册侦听器 指定事件的发送者(即事件目标); 若希望事件得到响应,必须要先为事件注册正确的侦听器。 发送事件 发送的事件类型必须与侦听器匹配; 比如你叫在饭店中叫看电影,服务生就不清楚怎样响应你。,6,侦听事件 发送事件后,侦听器才会处理事件。 不可能你没点菜,服务生就已经帮你下单。 移除侦听器 事件处理完成后,要移除侦听器。,7,3.程序如何实现?,确定事件目标 当某事件发生时,播放器会创建与该事件的event对象; event对象被传送到事件目标对象; 若事件目标上没有注册事件侦听,event对象被丢弃。 注册事件侦听函数 为了能够让事件目标对事件作出相应,需要在事件目标上注册事件侦听函数; 事件侦听函数:针对某个特定事件定义的一个响应函数;,8,可以在一个对象上注册若干个事件侦听函数,对应不同的事件,形成事件侦听列表。 执行事件响应函数 事件目标在列表中查到与接收到event对象相对应的响应函数。 event对象作为参数传递给函数 执行事件响应函数。,9,5.2 事件侦听的语法结构,注册事件侦听函数addEventListener(参数),addEventListener(type:String,listener:Object,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false),mc.addEventListener(MouseEvent.MOUSE_DOWN,f1),type:事件类型的字符串,定义在Event类中; listener:事件处理函数的函数名; useCapture:控制在事件流的不同阶段响应事件; Priority:侦听的优先级,大者优先。 useWeakReference:是否为弱引用。,10,定义事件处理函数 创建事件侦听器后,必须创建事件响应函数。,function f1(event:EventType):void ./用户定义 ,function f1(event:MouseEvent) trace(”鼠标被按下”); ,每个事件处理函数都包含一个参数,类型与实际响应的事件类型相同。 对应事件发生后,事件处理函数就会被执行。,11,注销侦听函数 不再需要时,及时对其注销,节约资源。使用removeEventListener()方法注销。,removeEventListener(type:String, listener:Function, useCapture:Boolean = false),mc.removeEventListener(MouseEvent.Mouse_Down,f1),注销事件处理函数和注册过程相对应,参数也一致。,12,5.3 事件类(Event),bt1.addEventListener(MouseEvent.MOUSE_DOWN,f1); function f1(event:MouseEvent) trace(”鼠标被按下”); ,13,event对象将事件信息储存在一组属性;此外包含一组方法,用于操作事件对象和影响事件处理系统的行为。,bt1按钮对象,按下事件,event 对象,播放器检测到用户单击鼠标时,就创建一个鼠标单击事件;每一个具体的事件都是一个对象。,参数,响应函数f1,Event类及子类,14,所有事件位于flash.events包内,共26个事件类型;,Event类定义了事件基本的属性和方法。 实际应用中的事件千差万别,在Event类基础上定义了一组子类,用于描绘各种不同性质的事件。,5.3.1 Event类的属性,15,测试输出event事件属性 根据输出结果分析event事件的重要属性 mc.addEventListener(MouseEvent.MOUSE_DOWN,handle); /定义事件的处理函数 function handle(event:MouseEvent) trace(event); ,16,5.3.2 Event类的方法,17,5.4 常用内建事件,鼠标事件 键盘事件 Timer类及相关事件 TextField类及相关事件 其他常用事件,18,5.4.1 鼠标事件,MouseEvent类管理鼠标事件,需导入flash.events.MouseEvent类。 MouseEvent类定义了10种常见的鼠标事件,具体如下: CLICK:鼠标单击事件 DOUBLE_CLICK:鼠标双击事件 MOUSE_DOWN:鼠标按下事件 MOUSE_MOVE:鼠标移动事件 MOUSE_OUT:鼠标移出事件 MOUSE_OVER:鼠标移过事件 MOUSE_UP:鼠标抬起事件 MOUSE_WHEEL:鼠标滚轴滚动触发事件 ROLL_OUT:鼠标滑出事件 ROLL_OVER:鼠标滑入事件,19,鼠标事件实例练习,1.砸金蛋实例 2.动态绘制直线,20,1.砸金蛋实例分析,界面设计准备工作 制作egg元件 金蛋有3个不同状态:静止摇摆破裂至破碎,21,第1帧,第28帧,第917帧,鼠标移动 进入金蛋,鼠标按下,鼠标移除金蛋,程序设计分析 创建egg类 构造函数中注册3个鼠标事件侦听函数,并分别设计3个响应函数 overEgg函数,播放金蛋摇晃动画 downEgg函数 注销事件侦听 随机生成金蛋内的文字 outEgg函数,回到金蛋初始静止状态 gotoAndPaly()和gotoAndStop()应用,22,2. 动态绘制直线,在舞台注册鼠标按下和抬起事件 在鼠标按下处理函数中为画线准备 当前鼠标点为画线起始点 设置画线风格 在鼠标松开处理函数中划出线段 调用画线函数从起点位置画直线,23,/向舞台上添加两个鼠标事件侦听 this.stage.addEventListener(MouseEvent.MOUSE_DOWN,downHd); this.stage.addEventListener(MouseEvent.MOUSE_UP,upHd); /鼠标按下时,定义画线风格,准备画线 function downHd(e:MouseEvent) this.graphics.lineStyle(2,0xFF0000); this.graphics.moveTo(e.localX,e.localY); /鼠标放开时,向鼠标当前位置画线 function upHd(e:MouseEvent) this.graphics.lineTo(e.localX,e.localY); ,24,实时显示画线过程如何实现?,25,5.4.2 键盘事件,KeyboardEvent类管理键盘事件。 它有两种类型: KeyboardEvent.KEY_DOWN / /定义按下键盘时事件 KeyboardEvent.KEY_UP /定义松开键盘时事件 注意:在使用键盘事件时,要先获得它的焦点,如果不想指定焦点,可以直接把stage作为侦听的目标。,26,键盘事件实例练习,1.显示键盘事件对象的属性 2.雷电游戏简易版本,27,28,29,30,31,5.4.3 Timer类及相关事件,每次达到指定的时间间隔时都会触发计时器事件。 首先创建Timer类的实例,设定产生计时器事件的时间间隔以及在停止前生成事件的次数。 Timer类有两个事件,分别为: TimerEvent.TIMER:计时事件,按照设定的事件发出。 TimerEvent.TIMER_COMPLETE:计时结束事件,当计时结束时发出,32,定时器事件实例练习,1.自动图片浏览 2.模拟秒表,33,5.4.4 TextField类,TextField类用于创建可视文本域; 在舞台上添加的动态文本和输入文本就是TextField类的对象,属性面板设置的实例名即是对象名; 四个事件: 文本内容被改变 单击文本中的超链接 文本滚动 输入文本,34,TextField事件实例练习,自动出题系统,35,5.4.5 其他常用事件,帧循环ENTER_FRAME事件 AS3.0中动画编程的核心事件。 以帧频触发事件,其时间间隔由影片的帧频决定。 在播放头进入新帧时触发,如果播放头没有移动或是只有一帧,则事件以帧频不断触发。如,当主场景的帧频为12帧/秒时,ENTER_FRAME事件将会在每秒钟发生12次, 使用该事件时,需要把该事件代码写入事件侦听函数中,然后在每次刷新屏幕时,都会调用Event. ENTER_FRAME事件,从而实现动画效果。,36,ADDED事件 在一个可视对象被添加到显示列表中时触发。 用于所有的可视对象(DisplayObject类及其子类的对象),37,5.5 事件流,事件对象在显示列表中的流动过程; 为处理具有包含关系的对象的事件触发问题提供良好地解决方案。 as3和dom的事件流都分三个阶段:捕获阶段、目标阶段、冒泡阶段。,38,事件流分析,mc,mc1,mc2,stage,mc,mc1,mc2,39,常用的事件,40,5.5.3 自定义事件,直接调用Event类的构造函数Event()创建一个自定义类型的事件对象; 或者扩展Event类,定义一个Event子类,然后创建这个自定义事件类的对象。 Event构造函数: public function Event(type:String,bubbles:Boolean=false,cancelable:Boolean=false),41,Public function dispatchEvent(event:Event):Boolean 让一个对象向外广播一个事件对象,需要调用该类的dispatc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论