flash 事件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
七、触发连续动作-计时事件
Event.ENTER_FRAME事件只能以帧频触发,局限性 较大,如果应用程序需要一致的计时间隔,则需要 将其与实际的日历或时钟时间联系在一起。许多如 游戏、动画和实时控制器等应用程序需要在不同计 算机上均能保持一致的、规则的时间驱动计时机制。 AS3.0的Timer类提供了一个功能强大的解决方案。 AS3.0 Timer 使用AS3.0事件模型,Timer类在每次达到指定的 时间间隔时都会调度计时器事件。要启动计时器, 先构造Timer类的实例,并告诉它每隔多长时间生 成一次计时器事件,以及在停止前生成多少次事件。
二、事件处理
1.创建事件侦听器 使用事件的前提是要先注册该事件。注册事件后,事件对 象、事件目标和侦听器就形成了逻辑关系。 格式: 事件目标.addEventListener(事件类型,侦听器) .addEventListener( , ) 注册事件后,同时定义侦听器函数,并把事件对象作为参 数传递给它,语法结构如下: function 侦听函数(参数名:事件类){ //code; }
第7章 事件
除了设计制作图形和动画,Flash还可以使浏 览者通过键盘、鼠标等输入设备来控制图形 和动画,从而实现站点导航、游戏、在线辅 导或需要浏览者进行选择等交互活动。 Flash中每一个动作的产生和完成,都会有事 件的存在。
一、事件的相关概念
事件的三个要素: 1.事件对象(Event Object):事件对象是Event类 或Event类子类的一个实例,它记录了所有特定事 件发生的相关信息。 2.事件目标(Event Target):指调度事件的对象。 3.侦听器(Listener):也称为侦听函数或侦听方法, 当发生特定事件时通知它(调用以事件对象为参数 的侦听函数或方法)。 例如:看到一群人惊慌失措地乱跑时,我们一般心里 会反应“出事了”,然后是一堆问号: (1)哪里出事了? (2)出什么事了? (3)怎么办?
2.为不同的对象定义上下文菜单 在Flash ActionScript 3中,可以为主场景或 场景中某个对象定义不同的上下文菜单。实 现用户在不同区域单击右键时,弹出不同的 上下文菜单。 示例:不同对象的上下文菜单。
3.自定义上下文菜单项 可以通过创建ContextMenuItem类的实例来自定义上 下文菜单项。创建实例时需要为这个实例添加一个用 引号括起来的字符串参数,作为上下文菜单中显示的 文字。然后,使用push()方法把这个新定义的菜单 项添加到自定义菜单项customItems的数组中。最 后,还需要为用户选中此菜单项添加事件驱动和执行 相应动作的函数或方法。 (菜单项实例.separatoBefore=true;//添加分隔线) 示例:自定义菜单项
2.自定义鼠标光标
可以将鼠标光标(鼠标指针)隐藏或交换为舞 台上的任何显示对象。首先隐藏光标,然后 创建自定义光标的实例,通过侦听调用函数 设置自定义光标的位置为实际鼠标所在的位 置。 示例:自定义光标
3.鼠标滚轮
鼠标滚轮是位于鼠标左右键中间的可前后滚动的象轮 子一样的按钮。 通过侦听MouseEvent.MOUSE_WHEEL事件,来响 应鼠标滚轮的运动和方向。鼠标滚轮有一个非常重 要的属性delta,通过delta可以设定用户滚动鼠标 的方向和速度。正delta数值代表鼠标滚轮向前 delta (远离用户)滚动,负delta数值代表鼠标滚轮向 后(朝向用户)滚动。delta值的范围是从-3到+3, 绝对值越大,滚动得越快。此设置取决于设备和操 作系统,并且可由用户配置,但仅应用于 MouseEvent.MOUSE_WHEEL事件。 示例:滚轮运动
八、焦点事件
1.播放器焦点 Event.ACTIVATE 活动状态 Event.DEACTIVATE 非活动状态 2.对象焦点 FocusEvent.FOCUS_IN FocusEvent.FOCUS_OUT
例1: stage.addEventListener(Event.ACTIVATE,myfu n1); stage.addEventListener(Event.DEACTIVATE,m yfun2); function myfun1(e:Event):void{ trace(“活动状态”); } function myfun2(e:Event):void{ trace(“非活动状态”); }
1.隐藏上下文菜单 可以通过以下代码来隐藏上下文菜单中的大部 分项,但是“设置”、“显示重绘区域”、 “调试器”仍然保留。 例如: var myMenu:ContextMenu=new ContextMenu(); myMenu.hideBuiltInItems(); this.contextMenu=myMenu;
Timer类的构造函数有两个参数:第一个参数是以毫 秒为单位的间隔时间;第二个参数是重复调用的次 数,如果次数为0,则重复无限次数。 var mytimer:Timer=new Timer(delay,repeatcount); Timer类有3个方法可用:start()启动计时器;stop() 停止计时器;reset()重置计时器。 Timer类有两个事件可用:当开始调用时会发生timer 事件,当调用结束时会发生timerComplete事件。 这两个事件都是TimerEvent类的属性,事件名分 别为Timer.TIMER和Timer.TIMER_COMPLETE。
五、自wk.baidu.com义上下文菜单
Flash Player有三种类型的上下文菜单-标准菜单(当在 FlashPlayer中右键单击时出现)、编辑菜单(当在可选择或 可编辑的文本字段中右键单击时出现)和错误菜单(当SWF文 件未能加载到FlashPlayer中时出现)。 只有标准菜单和编辑菜单才能使用ContextMenu类进行修改。 ContextMenu类提供对FlashPlayer上下文菜单中的项的控制。 用户通过在FlashPlayer中右击(Windows)或按住Control 单击(Macintosh)可打开上下文菜单。可以将 ContextMenu对象附加到特定的按钮、影片剪辑或文本字段 对象,也可以附加到整个影片级别。为此,可以使用Button、 MovieClip或TextField类的menu属性。
四、捕获键盘输入-键盘事件
可以使用事件侦听器来响应键盘事件。捕获并根据按键的键控代码或字符代码来执 行相应的动作。 键控代码keyCode属性为数值,代表键盘上的某个键,在同一键上的不同字符具 有相同的键控代码值。例如:“5”和“%”具有相同的键控代码值53;“A”和 “a”具有相同的键控代码值65。键与其键控代码之间的映射取决于设备和操 作系统。因此,不应使用键映射来触发动作,而应使用Keyboard类提供的预 定义常量值来引用相应的keyCode属性。例如,对象Shift键使用 Keyboard.SHIFT常量。 字符代码charCode属性是某个字符的数值。“A”和“a”虽然具有相同的键控代码 值,但它们的字符代码不同,“A”为65,“a”为97;大键盘和数字键盘上的 “1”虽然具有不同的键控代码值,但它们具有相同的字符代码49。 例:function codeReport(e:KeyboardEvent):void{ trace(“Key Pressed:”+String.fromCharCode(e.charCode)); trace(“key Code:”+e.keyCode); trace(“character code:”+e.charCode); } stage.addEventListener(keyboardEvent.KEY_DOWN,codeReport); 示例:打击乐器
例如: var mytimer:Timer=new Timer(1000,2); mytimer.addEventListener(TimerEvent.TIMER,handler1); mytimer.addEventListener(TimerEvent.TIMER_COMPLETE,h andler2); mytimer.start(); function handler1(e:TimerEvent):void{ mc.x+=100; } function handler2(e:TimerEvent):void{ trace("时间到了"); mytimer.stop(); }
三、捕获鼠标输入-鼠标事件
鼠标单击将创建鼠标事件,这些事件可用来触发交互式 功能。可以将事件侦听器添加到舞台上以侦听在SWF文件中 任何位置发生的鼠标事件。也可以将事件侦听器添加到舞台 上从InteractiveObject进行继承的对象(例如,Sprite或 MovieClip)中,单击该对象时将触发这些侦听器。 鼠标事件主要包括——单击(CLICK),双击 (DOUBLE_CLICK)-双击要使对象的doublenabled属性 为true,按下鼠标(MOUSE_DOWN),释放鼠标 (MOUSE_UP),将光标移动到交互对象上 (MOUSE_OVER),将光标从交互对象上移开 (MOUSE_OUT),在交互对象上移动光标 (MOUSE_MOVE),鼠标滚轮在交互对象上移动 (MOUSE_WHEEL)。
1.冒泡的鼠标事件
鼠标事件与键盘事件一样也会冒泡。例如,在场景中 建立的Sprite类的实例是场景Stage的子级,因此, 单击实例时,将从Sprite实例和Stage对象中调度 事件。 target属性代表事件目标的对象。如果用户在包括重 叠的显示列表对象的某处进行鼠标交互行为,则 Flash Player始终会选择距离舞台层次最深的对象 作为事件目标。 示例:陀螺
六、触发连续动作-帧事件
Event.ENTER_FRAME事件是以侦频触发,持续执行。例如,主场景帧 频是12帧/秒,那么,ENTER_FRAME事件就会每秒钟引发12次,即 使时间轴停止,事件也仍然会发生。只有删除此事件控制或移除响应 动作的对象,才能停止该事件。 用法:事件目标.addEventListener(Event.ENTER_FRAME,侦听函数) 例如:
自定义菜单项始终出现在FlashPlayer上下文菜单的顶部,并位于所 有可见内置菜单项之上;内置菜单项和自定义菜单项之间由一个 分隔条加以分隔。不能从上下文菜单中删除“设置”菜单项和 “关于”菜单项。必须在使用ContextMenu()构造函数创建 ContextMenu对象后才能调用其方法。 可以使用ContextMenu类创建在FlashPlayer上下文菜单中显示的 自定义菜单项。每个ContextMenuItem对象都有一个显示在上 下文菜单中的标头(文本)。若要向上下文菜单中添加新项,需 将其加到ContextMenu对象的customItems数组。利用 ContextMenuItem类的属性,可以启用或禁用特定菜单项,也 可以显示或隐藏菜单项。 如何自定义菜单呢?在FlashPlayer中,上下文菜单项由 ContextMenu类控制,可以使用ContextMenuItem类创建上 下文菜单中的自定义菜单项,可以将ContextMenu对象附加到 主场景、影片剪辑、按钮,或者文本字段等。
function da(e:Event):void{ mc.width += 10; mc.height += 10; if(mc.width > 500){ mc.removeEventListener(Event.ENTER_FRAME,da); } } mc.addEventListener(Event.ENTER_FRAME,da);
2.删除事件侦听器 通过删除事件侦听器,使原创建的事件侦听器不再发生作 用,同时释放内存,降低系统开销。 格式: 事件目标.removeEventListener(事件类型,侦听器) 例:function fun(e:MouseEvent):void{ trace("单击"); } mc.addEventListener(MouseEvent.CLICK,fun); mc.removeEventListener(MouseEvent.CLICK,fun);