flash 事件
Flash ActionScript3.0事件流的概念

事件流的概念接下来我们来看一下事件流的一些概念。
当注册一个事件以后,只要事件发生,那flash player就会调度这个事件对象。
当事件目标是非显示类对象的时候,也就是它不会呈现在画面上,那flash player会直接调试这个对象,也就是说,谁发出的,它马上可以接受,直接到达。
如果事件目标是在显示列表当中,是一个显示对象,那flash player会按事件对象所处的结构逐级传递,直到送达目标,这个过程就被称为事件流。
事件对象在显示列表当中穿行,从舞台开始,一直到达目标节点。
比如说,我点击了一下场景当中的某一个按钮,那这个事件实际上是怎么穿行的呢?它是首先先从舞台开始,接下来它进入到下一个层级,比如说我这个按钮是放在MovieClick里面的,那么下一步穿行到它的父节点MovieClick,再下一步才到达目标节点。
我们点击了按钮,它的目标节点就是按钮,到达目标节点这个过程叫捕获阶段,是事件要一直传递到目标;那事件到达目标节点的时候,称为目标阶段,就是这一瞬间称为目标阶段;然后事件再由目标节点返回到舞台,这个过程称为冒泡阶段,就是说事件从目标节点又回来了,一层一层还是要通过它的父级MovieClick,然后再返回到stage上面。
不同事件类型的它的目标节点也是有所不同的。
我们来看一下具体的例子,来了解一下事件流基本概念。
我们刚才说了3种不同的阶段:捕获阶段,目标阶段,冒泡阶段。
那么这3个阶段有一个专门的属性叫eventPhase来对它进行描述,分别用1,2,3来代表不同的阶段。
一般情况下,我们在声明一个函数它为了效率,比如说注册的时候,flash实际上是会省略掉其中的一部分的,因为捕获阶段和冒泡阶段实际上穿越的层级是一样的。
所以,一般在注册事件的时候实际上是有一个参数,就是uesCapture使用捕获这个值到底是要设置为true还是false,如果设置为true的话,它检测过程是在捕获阶段检测,否则它使用false的话,它对应的是目标阶段和冒泡阶段,也就是到达目标然后再冒泡返回来的这个阶段里边去检测这个事件。
Flash案例制作

Flash案例制作 西北师范大学
案例三:Flash补间动画—“动画补间”
掌握: .动画的种类 . .补间动画 动画补间(图形) 点到点的直线
.动画补间
逐帧动画 补间动画
形状补间(图像)
引导线的曲线
动画补间
演示
Flash案例制作 西北师范大学
案例四:Flash“动画补间”—引导层动画
掌握:
•引导层动画的使用及注意事项 •形状补间动画 •补间动画的注意事项:
用图形指令来表示—图元。如Line x1,y1 x2,y2
Flash案例制作 西北师范大学
矢量图像放大效果
图像与图形的区别
• 图像的存储是从左到右,从上到下 图形是按图元指令的先后顺序存储 • 图像放大缩小有像素损失;图形可任 意放大缩小,可进行局部编辑 • 图像容量比图形大的多,图形以计算 时间为代价
Flash案例制作 西北师范大学
案例六:Flash遮罩技术示例一红绿蓝三基色课件
掌握: •遮罩的含义
在Flash的图层中有一个遮罩图层类型,为了 得到特殊的显示效果,可以在遮罩层上创建一个 任意形状的“视窗”,遮罩层下方的对象可以通 过该“视窗”显示出来,而“视窗”之外的对象 将不会显示。
•遮罩的作用
Flash案例制作 西北师范大学
案例十:Flash声音控制方法二
—将声音文件直接放入时间轴
掌握: •声音控制的方法 •文字与声音同步 •遮罩技术的使用 •“落雪”文字制作 •图像转图形的方法 •雪花制作方法
演示
Flash案例制作 西北师范大学
案例十一:酒精灯燃烧
综合大作业
掌握: •动画补间和形状补间 •动画补间的两种方法 •遮罩技术的使用 •混色器中位图的使用 •按钮的使用
Flash常用函数命令用法

Flash常用函数命令用法1、gotoAndPlay(scene, frame)参数scene 播放头将转到的场景的名称。
frame 播放头将转到的帧的编号或标签。
说明动作;将播放头转到场景中指定的帧并从该帧开始播放。
如果未指定场景,则播放头将转到当前场景中的指定帧。
示例当用户点击 gotoAndPlay 动作所分配到的按钮时,播放头将转到第 16 帧并开始播放。
on(release) {gotoAndPlay(16);}2、gotoAndStop(scene, frame)参数scene 播放头将转到的场景的名称。
frame 播放头将转到的帧的编号或标签。
说明动作;将播放头转到场景中指定的帧并停止播放。
如果未指定场景,则播放头将转到当前场景中的帧。
示例当用户点击 gotoAndStop 动作所分配到的按钮时,播放头将转到第 5 帧并且影片停止播放。
on(release) {gotoAndStop(5);}3、on(mouse Event) {statement(s);}参数statement(s) 发生 mouse Event 时要执行的指令。
mouse Event 是称作“事件”的触发器。
当发生此事件时,执行事件后面花括号中的语句。
可以为 mouse Event参数指定下面的任何值:- press 在鼠标指针经过按钮时按下鼠标按钮。
- release 在鼠标指针经过按钮时释放鼠标按钮。
- release Outside 当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标按钮。
- rollout 鼠标指针滑出按钮区域。
- rollover 鼠标指针滑过按钮。
- dragOut 在鼠标指针滑过按钮时按下鼠标按钮,然后滑出此按钮区域。
- dragOver 在鼠标指针滑过按钮时按下鼠标按钮,然后滑出此按钮,再滑回此按钮。
- key Press (“key”) 按下指定的 key。
Flash CS4 事件

Flash CS4 事件事件就是所发生的、ActionScript能够识别并可响应的事情。
SWF文件进行的任何与用户交互都可以视为事件,如键盘输入、鼠标单击等。
●1.事件处理从本质上来说,当ActionScript程序在运行时,Flash Player只是在等待某些事情的发生。
当这些事情发生时,Flash Player将会运行为这些事件指定的ActionScript代码。
●事件处理基本结构无论何时编写处理事件的ActionScript代码,都会包含三个元素(事件源、事件和响应),并且遵循以下基本结构:function eventResponse(eventObject:EventType):void{//为响应事件而执行的程序代码}eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);在上面的代码中,首先定义一个函数,用于指定为响应事件而执行的程序代码。
然后,调用事件对象的addEventListener()方法,以便当事件发生时,执行该函数的动作。
●事件对象在ActionScript 3.0中,每个事件都由一个事件对象表示。
事件对象是Event类或某个子类的实例,它不但存储有关特定事件的信息,还包含便于操作事件对象的方法。
例如,当Flash Player检测到鼠标单击时,它会创建一个事件对象(MouseEvent类的实例)以表示该特定鼠标单击事件。
为方便对这些属性和方法的访问,Flash Player API定义了一个Event类,作为所有事件对象的基类。
Event类定义一组基本的、适用于所有事件对象的属性和方法,其详细说明如下。
事件侦听器也称为事件处理函数,是Flash Player为响应特定事件而执行的函数。
添加事件侦听器的过程分为两步:首先,为Flash Player创建一个为响应事件而执行的函数或类方法(也可称为侦听器函数或事件处理函数)。
FLASH掉程序

在FLASH内已经下载了正确的程序(因为已经正常运行过),重新上电后,程序丢失,系统不能正常运行。
重新下载程序后又正常。
可能原因是:FLASH在上电或掉电时,数据内容给擦掉了或出错了(此现象跟CPU没关系),可能是一个块给擦了,也可能是几个块给擦了。
请问高手,用软件有什么解决办法可以解决此问题(避免系统不能正常启动运行)?用FLASH块不断备份不知行不行,希望高手指教,谢谢!(1、下载完后是不会掉电的。
软件程序的走向基本是这样的,从ROM中启动,把FLASH程序COPY到SDRAM中,然后在SDRAM中运行。
如果刚开始FLASH中没有程序,ROM程序内可以自动检查通信口,以下载程序到FLASH。
下载完毕后,会同时把程序COPY到SDRAM内,然后在SDRAM中运行。
下载或COPY程序到SDRAM是否成功可以在显示屏上显示。
2、在正常运行时,掉电,重新上电,系统没法正常运行。
3、数据丢失,什么时候给擦掉了?软件还是硬件?我也不清楚,因为这个现象复现起来有点困难,出现的机率约0.5%)分析:1、检查一下FLASH的读写速度是否与CPU匹配,当读写刚好临界,可能会产生无法预知的操作。
(软件问题)2、碰上过FLASH写入程序后,在某次上电时数据被意外改写的故障,后来发现是在上电时,由于FLASH的写信号在跳变,刚好满足FLASH的写命令,使得FLASH被改写。
解决办法:A、使用带有上电电压检测功能得FLASH,上电电压不足时,FLASH处于复位状态;B、改变FLASH写、片选电路得设计,保证在上电CPU没有完成复位时,这个信号被锁定在无效状态下。
(硬件问题)3、有可能是悬空脚的问题,有产品在使用一段时间后会出现FLASH被修改的情况,将WR脚置高就好了4、些系统中,CPU和FLASH使用了不同的复位电路,即使使用了相同的复位电路,也有可能FLASH和CPU完成复位的时间不一样,这其中就要考虑CPU完成复位的时间到程序执行从FLASH读取程序到SDRAM的时间间隔中,FLASH是否能够完成复位5、 a、比较出错FLASH内的程序代码与原代码是否一致(其中包括BOOTROM的程序,并且BOOTROM程序优先比较)b、如果代码一致,则原因在于CPU的上电时序与系统的MEMORY等时序不一致c、如果代码不一致,有情况A:程序都在一个地方被改,情况B:程序被改的地方随机。
Flash CS3 鼠标事件处理程序

Flash CS3 鼠标事件处理程序所谓鼠标事件是指用户在影片播放过程中,通过单击某个按钮、影片剪辑或文本字段而发生的鼠标事件。
此类鼠标事件总涉及一个按钮、影片剪辑或文本字段并且可以触发一个动作的发生。
例如,单击按钮开始或停止播放影片,单击按钮打开链接网页等等,这些动作的处理程序是制作交互性动画常见的处理事件。
1。
鼠标单击事件这类事件处理程序的代码块结构都是固定的,第一个语句给指定元件添加一个事件侦听器,用来检查用户是否单击该元件;第二个语句是执行程序的代码块。
例如playButton.addEventListener(MouseEvent.CLICK,clickHandler);function clickHandler(event:MouseEvent):void{This.play();//程序代码块};在这个语句中,无论何时只要用户单击playButton按钮,clickHandler()函数就会执行。
2。
鼠标拖动事件如果用户需要在场影中拖动对象,则需要在程序代码中加入两个事性侦听器,mouseDown(MouseEvent.MOUSE_DOWN)和mouseUp(MouseEvent.MOUSE_UP),如下面的例子。
ball_mc.addEventListener(MouseEvent.CLICK, clickHandler);ball_mc.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownListener);function mouseDownListener(event:MouseEvent):void{ball_mc.startDrag();};function mouseUpListener(event:MouseEvent):void{ball_mc.stopDrag();};通过给按钮、影片剪辑或文本添加此脚本程序并测试影片,影片中的元件即可进行拖动。
关于 ActionScript 和事件

关于 ActionScript 和事件在 Macromedia Flash Basic 8 和 Macromedia Flash Professional 8 中,事件发生时会执行 ActionScript 代码:例如,在加载影片剪辑时、在进入时间轴上的关键帧时或者在用户单击某个按钮时。
事件可以由用户或系统触发。
用户单击鼠标按钮或按键;在满足特定条件或进程完成(SWF 文件加载、时间轴到达特定的帧、图形完成下载等)时,系统会触发相关事件。
事件发生时,您应编写一个事件处理函数,从而在该事件发生时让一个动作响应该事件。
了解事件发生的时间和位置将有助于您确定在什么位置、以什么样的方式用一个动作响应该事件,以及在各种情况下分别应该使用哪些 ActionScript 工具。
有关更多信息,请参见关于通过编写脚本来处理事件。
事件可以划分为以下几类:鼠标和键盘事件,发生在用户通过鼠标和键盘与Flash 应用程序交互时;剪辑事件,发生在影片剪辑内;帧事件,发生在时间轴上的帧中。
有关可以编写处理事件的脚本的种类的信息,请参见关于通过编写脚本来处理事件。
鼠标和键盘事件用户与 SWF 文件或应用程序交互时触发鼠标和键盘事件。
例如,当用户滑过一个按钮时,将发生 Button.onRollOver 或 on(rollOver) 事件;当用户单击某个按钮时,将发生 Button.onRelease 事件;如果按下键盘上的某个键,则发生on(keyPress) 事件。
可在帧上编写代码或向实例附加脚本,以处理这些事件以及添加所需的所有交互操作。
剪辑事件在影片剪辑中,您可以响应用户进入或退出场景或使用鼠标或键盘与场景进行交互时触发的多个剪辑事件。
例如,可以在用户进入场景时将外部 SWF 文件或 JPG 图像加载到影片剪辑中,或允许用户使用移动鼠标的方法在场景中调整元素的位置。
帧事件在主时间轴或影片剪辑时间轴上,当播放头进入关键帧时会发生系统事件 -- 这叫做帧事件。
Flash事件含义

Flash 交互代码含义
一、鼠标事件
Press 当用户将鼠标移到电影按钮并按鼠标按键时,动作触发
Release 当用户将鼠标移到电影按钮并且释放鼠标按键时,动作触发(这是大多数动作的默认鼠标事件)
Release Outside 当用户按下电影按钮,且在按钮外释放鼠标时动作发生
Roll Over 当用户将鼠标放置在按键上时动作发生
Roll Out 当用户将鼠标从按键上移出时动作发生
Drag Over 当用户将鼠标放置在电影按键上的同时按住鼠标按钮,然后将鼠标从电影按钮上拖出(依然按住鼠标按钮),然后在将鼠标放回电影按键时动作发生
Drag Out 当用户将鼠标放置在电影按键上后,按住鼠标键,然后将鼠标从电影按钮上拖出(依然按住鼠标按钮)时动作发生
二、键盘事件
键盘事件不区分大小写。
三、帧事件
总是设置在关键帧,可用于在某个时间点触发一个特定动作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、捕获键盘输入-键盘事件
可以使用事件侦听器来响应键盘事件。捕获并根据按键的键控代码或字符代码来执 行相应的动作。 键控代码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); 示例:打击乐器
七、触发连续动作-计时事件
Event.ENTER_FRAME事件只能以帧频触发,局限性 较大,如果应用程序需要一致的计时间隔,则需要 将其与实际的日历或时时间联系在一起。许多如 游戏、动画和实时控制器等应用程序需要在不同计 算机上均能保持一致的、规则的时间驱动计时机制。 AS3.0的Timer类提供了一个功能强大的解决方案。 AS3.0 Timer 使用AS3.0事件模型,Timer类在每次达到指定的 时间间隔时都会调度计时器事件。要启动计时器, 先构造Timer类的实例,并告诉它每隔多长时间生 成一次计时器事件,以及在停止前生成多少次事件。
2.为不同的对象定义上下文菜单 在Flash ActionScript 3中,可以为主场景或 场景中某个对象定义不同的上下文菜单。实 现用户在不同区域单击右键时,弹出不同的 上下文菜单。 示例:不同对象的上下文菜单。
3.自定义上下文菜单项 可以通过创建ContextMenuItem类的实例来自定义上 下文菜单项。创建实例时需要为这个实例添加一个用 引号括起来的字符串参数,作为上下文菜单中显示的 文字。然后,使用push()方法把这个新定义的菜单 项添加到自定义菜单项customItems的数组中。最 后,还需要为用户选中此菜单项添加事件驱动和执行 相应动作的函数或方法。 (菜单项实例.separatoBefore=true;//添加分隔线) 示例:自定义菜单项
五、自定义上下文菜单
Flash Player有三种类型的上下文菜单-标准菜单(当在 FlashPlayer中右键单击时出现)、编辑菜单(当在可选择或 可编辑的文本字段中右键单击时出现)和错误菜单(当SWF文 件未能加载到FlashPlayer中时出现)。 只有标准菜单和编辑菜单才能使用ContextMenu类进行修改。 ContextMenu类提供对FlashPlayer上下文菜单中的项的控制。 用户通过在FlashPlayer中右击(Windows)或按住Control 单击(Macintosh)可打开上下文菜单。可以将 ContextMenu对象附加到特定的按钮、影片剪辑或文本字段 对象,也可以附加到整个影片级别。为此,可以使用Button、 MovieClip或TextField类的menu属性。
三、捕获鼠标输入-鼠标事件
鼠标单击将创建鼠标事件,这些事件可用来触发交互式 功能。可以将事件侦听器添加到舞台上以侦听在SWF文件中 任何位置发生的鼠标事件。也可以将事件侦听器添加到舞台 上从InteractiveObject进行继承的对象(例如,Sprite或 MovieClip)中,单击该对象时将触发这些侦听器。 鼠标事件主要包括——单击(CLICK),双击 (DOUBLE_CLICK)-双击要使对象的doublenabled属性 为true,按下鼠标(MOUSE_DOWN),释放鼠标 (MOUSE_UP),将光标移动到交互对象上 (MOUSE_OVER),将光标从交互对象上移开 (MOUSE_OUT),在交互对象上移动光标 (MOUSE_MOVE),鼠标滚轮在交互对象上移动 (MOUSE_WHEEL)。
例如: 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(); }
八、焦点事件
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(“非活动状态”); }
2.删除事件侦听器 通过删除事件侦听器,使原创建的事件侦听器不再发生作 用,同时释放内存,降低系统开销。 格式: 事件目标.removeEventListener(事件类型,侦听器) 例:function fun(e:MouseEvent):void{ trace("单击"); } mc.addEventListener(MouseEvent.CLICK,fun); mc.removeEventListener(MouseEvent.CLICK,fun);
自定义菜单项始终出现在FlashPlayer上下文菜单的顶部,并位于所 有可见内置菜单项之上;内置菜单项和自定义菜单项之间由一个 分隔条加以分隔。不能从上下文菜单中删除“设置”菜单项和 “关于”菜单项。必须在使用ContextMenu()构造函数创建 ContextMenu对象后才能调用其方法。 可以使用ContextMenu类创建在FlashPlayer上下文菜单中显示的 自定义菜单项。每个ContextMenuItem对象都有一个显示在上 下文菜单中的标头(文本)。若要向上下文菜单中添加新项,需 将其加到ContextMenu对象的customItems数组。利用 ContextMenuItem类的属性,可以启用或禁用特定菜单项,也 可以显示或隐藏菜单项。 如何自定义菜单呢?在FlashPlayer中,上下文菜单项由 ContextMenu类控制,可以使用ContextMenuItem类创建上 下文菜单中的自定义菜单项,可以将ContextMenu对象附加到 主场景、影片剪辑、按钮,或者文本字段等。
六、触发连续动作-帧事件
Event.ENTER_FRAME事件是以侦频触发,持续执行。例如,主场景帧 频是12帧/秒,那么,ENTER_FRAME事件就会每秒钟引发12次,即 使时间轴停止,事件也仍然会发生。只有删除此事件控制或移除响应 动作的对象,才能停止该事件。 用法:事件目标.addEventListener(Event.ENTER_FRAME,侦听函数) 例如:
二、事件处理
1.创建事件侦听器 使用事件的前提是要先注册该事件。注册事件后,事件对 象、事件目标和侦听器就形成了逻辑关系。 格式: 事件目标.addEventListener(事件类型,侦听器) .addEventListener( , ) 注册事件后,同时定义侦听器函数,并把事件对象作为参 数传递给它,语法结构如下: function 侦听函数(参数名:事件类){ //code; }
1.隐藏上下文菜单 可以通过以下代码来隐藏上下文菜单中的大部 分项,但是“设置”、“显示重绘区域”、 “调试器”仍然保留。 例如: var myMenu:ContextMenu=new ContextMenu(); myMenu.hideBuiltInItems(); this.contextMenu=myMenu;
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.自定义鼠标光标
可以将鼠标光标(鼠标指针)隐藏或交换为舞 台上的任何显示对象。首先隐藏光标,然后 创建自定义光标的实例,通过侦听调用函数 设置自定义光标的位置为实际鼠标所在的位 置。 示例:自定义光标
3.鼠标滚轮
鼠标滚轮是位于鼠标左右键中间的可前后滚动的象轮 子一样的按钮。 通过侦听MouseEvent.MOUSE_WHEEL事件,来响 应鼠标滚轮的运动和方向。鼠标滚轮有一个非常重 要的属性delta,通过delta可以设定用户滚动鼠标 的方向和速度。正delta数值代表鼠标滚轮向前 delta (远离用户)滚动,负delta数值代表鼠标滚轮向 后(朝向用户)滚动。delta值的范围是从-3到+3, 绝对值越大,滚动得越快。此设置取决于设备和操 作系统,并且可由用户配置,但仅应用于 MouseEvent.MOUSE_WHEEL事件。 示例:滚轮运动