第三章 最简单的ActionScript程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 最简单的ActionScript程序设计 3.1认识函数 函数在编程中必不可少,Flash中有 一些非常简单的函数,如: Stop(); 它的作用是停止当前正在播放的 SWF文件,其中stop代表函数的标识符, 即函数的名称。()表示运算符,所有函数 都有如下格式。 函数名();
例如:
nextFrame(); 这个函数表示将播放头转到下一帧。 有很多函数在()中还必须加入一些参数,例 如:gotoAndStop(8); 其中8为函数的参数,表示将播放头转到当前 场景中的第八帧并停止播放。函数中的参数 可以是多个,参数与参数之间用逗号隔开, 如: Math.atan2(y,x); 此函数表示以弧度为单位计算并返回y/x的反正 切值。
(3)分别在第二帧和第三帧插入一关键帧, 帧标签分别为_over和_down,同时修改场 景中的图形。 (4)返回主场景,单击实例,打开“动作” 面板,输入下列代码: on (release) { trace("这是一个影片剪辑实例"); } (5)测试影片。
2、OnClipEvent()事件处理函数 OnClipEvent()事件处理函数与on()事件处理函数 不同,它只能作用于影片剪辑实例,相关的代码 放在影片剪辑实例的“动作”面板中。 onClipEvent()函数的一般形式为 onClipEvent(事件名称){ //程序 } 编写程序时,Flash会自动提示onClipEvent()的事件 名称,对于影片剪辑而言,可指定的触发事件有9 种,分别如下:
此函数中,增加一个变量frameNum用 来代表要跳转的帧数,如果要使mc跳转到 第20帧,可以这样调用: mcToFrame(mc.20); 同样,要使影片剪辑实例mc1跳转到第 五帧,就可以使用此函数,这样调用: mcToFrame(mc1.5); 3.2 程序的三种基本结构 3.2.1顺序结构 顺序结构的程序是按顺序执行的,从程 序开头一直执行到结尾。只执行一次。
1、load:影片剪辑一旦被实例化并出现在时 间轴中时,即启动此动作。 范例3-7:认识load事件 (1)新建一个Flash文档 (2)在场景中建一个影片剪辑实例,选中该 实例,打开“动作”面板,输入下列代码: onClipEvent(load){ trace(“发生了load事件”); } (3)测试影片,在“输出”面板中可以看到 输出的信息,只有一次。
3.1.2自定义函数 Flash内置的函数有限,所以要实现的 功能也有限,要扩展函数的功能,就要自 定义函数。用关键字function实现自定义函 数。格式如下: function 函数名(){ //代码 } 当函数定义好以后,只需用如下方式调用函 数: 函数名();
范例3-1:编写一个自定义函数,实现指定帧 的跳转功能 (1)新建一个Flash文档。并创建一个影片 剪辑,在此影片剪辑中制作一个简单的补 间动画。 (2)回到主场景,把该影片剪辑拖到主场景 中,并命名为mc。 (3)在主场景中新建一层,并输入下列代码: Function mcToFrame() {mc.gotoAndStop(20);} //自定义函数
releaseOutside:事件发生于在按钮上方按下 鼠标左键,接着把鼠标指针移到按钮之外, 然后松开鼠标左键时。 rollover:事件发生于鼠标指针滑入按钮时。 rollOut: 事件发生于鼠标指针滑出按钮时。 dragOver:事件发生于按着鼠标左键不放, 鼠标指针滑入按钮时。 dragOut:事件发生于按着鼠标左键不放,鼠 标指针滑出按钮时。 keyPress:事件发生于用户按下指定的按键 时。
3 当单击某个按钮或按下键盘上的某个键时。 为了使应用程序能够对事件做出反应,必 须编写相应的事件处理程序。事件处理程 序是与特定对象和事件关联的动作脚本代 码。Flash MX 2004提供了三种编写事件处 理程序的方法。 1) 针对对象的on()事件和onClipEvent()事件 处理函数 2 )事件处理函数方法 3 )事件侦听器
Flash中的事件包括用户事件和系统事 件两类。用户事件是指用户直接与计算机 交互操作而产生的事件,例如单击或按下 键盘键等事件。系统事件是指Flash Player 自动生成的事件,它不是由用户生成的, 例如影片剪辑在舞台上第一次出现或播放 头经过某个关键帧等。 一般情况下,在以下几种情况下会产生 事件。 1 当在时间轴上播放到某一帧时。 2 当载入或卸载某个影片剪辑时。
பைடு நூலகம்
如果想让菜单链接到网页上,可以在按 钮实例上加上: on(release){ getURL(“http://www.163.com”); } 范例3-6:创建具有按钮状态的影片剪辑 (1)新建一个Flash文档。 (2)在场景中制作一个影片剪辑实例,双击 此实例进入元件的编辑场景,选中第一帧, 打开属性面板,设置帧标签为“_up”。
(3)选中第一帧,打开“动作”面板,输入 下列代码: var num = 5; while (num>0) { _root["mc"+num]._y = 200; _root["mc"+num]._x = mc1._x+num*mc1._width; num--; } (4)测试影片。
3.3 事件和事件处理 事件是指软件或硬件发生的事情,它需 要Flash应用程序对这些事件有一定的相应。 硬件发生的事件如按下键盘、单击鼠标、 移动鼠标等,软件发生的事件如影片剪辑 刚刚被载入场景,影片剪辑被卸载等。 为了使应用程序能够对事件做出反应, 必须使用事件处理函数。如单击按钮时, 可以停止影片的播放等。 范例3-4:用按钮控制物体的移动
(3)选中直线,把实例名取名为“line”。 (4)新建一层,选中此层的第一帧,输入如 下代码: line._rotation+=5 (5)测试影片,直线按顺时针方向转动了5 度。 (6)把主场景中的两层都插入一帧,测试影 片,发现直线不断的旋转。 3.2.2选择结构 在选择结构程序中,有一个条件,当条件为
这种按照语句的排列方式逐句执行的方 式,称为顺序结构。 Flash中的程序可以放到帧中,而帧是 可以循环播放的,当播放到某帧,帧中的 代码就会按照顺序执行一次,所以一个顺 序结构的程序在Flash中利用帧的循环可多 次执行,但在运行到某帧时只执行一次。 范例3-2:不断旋转的指针 (1)新建一个Flash文档。 (2)在主场景中画一条水平的直线,并把该 直线转换为影片剪辑元件。把注册点放在 直线的左端。
真时,执行一段代码,否则的话,执行另一 段代码。例如: var a=true; var b=3; if(a){ b*=3; }else{ b/=3; } trace(b);
这段程序中,因为a为真,所以只执行 b*=3,b等于9,程序中的b/=3跳过,最后执行 trace(b),输出9。 3.2.3循环结构 循环结构程序最主要的特点是有一个重 复执行程序的过程,当条件为真时,反复执 行程序,一直到条件为假时停止。 范例3-3:让影片剪辑横向均匀排列 (1)新建一个Flash文档 (2)在场景建立五个影片剪辑实例,实例名 分别设置为mc1、mc2、mc3、mc4、mc5
在范例3-7的基础上,执行以下操作。 (1)打开影片剪辑实例的“动作”面板,把代码改 为 onClipEvent(load){ trace(“发生了load事件”); } onClipEvent(unload){ trace(“发生了unload事件”); } (2)移出第2帧上的空白关键帧,在第20帧插入帧, 在第21帧插入一空白关键帧,在第40帧插入帧。 (3)测试影片
当影片剪辑实例出现在第一帧时,发生load 事件,播放到第21帧,实例消失,发生 unload事件,帧继续播放,重复以上过程, 间隔的发生load事件和unload事件。 3、 enterFrame:以影片剪辑帧频不断触发 的动作。首先处理与enterFrame影片剪辑 事件关联的动作,然后才处理附加到受影 响帧的所有帧动作。 enterFrame事件其实是一个不断执行的程序, 执行的速度取决于帧频,Flash中默认的帧 频是12fbs,表示播放12帧需1秒的时间, 利用这个原理,可以制作一个简单的计时 器。
此函数中,obj代表影片剪辑的实例名,是函 数的参数,必须放在括号中。此函数这样调用: mcToFrame(mc); 这个函数已经可以用于所有的影片剪辑实例, 但还有一个不好的地方,就是不能被用户指定要 跳转的帧数,所以还可修改为: function mcToFrame(obj:MovieClip, frameNum:Number) { obj.gotoAndStop(frameNum); }
(4)返回主场景,在第二帧插入一帧,让其循环, 测试影片,虽然帧不断的循环播放,但输出的信 息也只有一次。 (5)返回主场景,在第二帧插入一空白关键帧,让 其循环播放,测试影片,将看到信息不断出现。 通过测试可以看出,当影片剪辑实例出现在时 间轴上时,load事件发生,当实例在事件轴上消 失又重新出现时,也会发生load事件。 2、unload:在时间轴中删除影片剪辑之后,此动作 在第一帧中启动。在向受影响的帧附加任何动作 以前,先处理与unload影片剪辑事件关联的动作。 Unload事件与load事件刚好相反,当影片剪辑实例 在时间轴上消失时才会发生。
mcToFrame(); //调用函数 (4)测试影片,可以看到主场景中的影片剪 辑实例停在第20帧。 为了使函数适用于所有的影片剪辑实例, 函数中应建立一个数据类型为MoiveClip的 变量,用来代表影片剪辑的实例名。如下: function mcToFrame(obj:MovieClip){ obj.gotoAndStop(20); }
下面就以第一种方法的事件为例,讲解 这种编写事件处理程序方法的应用。 1、on()事件处理函数 on()事件处理函数是最传统的事件处理 方法。它一般直接作用于按钮实例,也可 以作用于影片剪辑实例。 on()函数的一般形式为: on(鼠标事件){ //程序,这些程序组成的函数体响应鼠标事件 }
其中鼠标事件是“事件”触发器,当发 生此事件时,执行事件后面大括号中的程 序。 按钮可以响应鼠标事件,还可以响应 Key Press(按键)事件。对于按钮而言, 可指定触发动作的按钮时间有八种。 1、press:事件发生于鼠标指针在按钮上方, 并按下鼠标左键时。 2、release:事件发生于按钮上方按下鼠标 左键,接着松开鼠标左键时,也就是“单 击”。
范例3-5:制作动感菜单 (1)新建一个Flash文档。 (2)在场景中建立一个按钮实例,单击按钮实例, 打开“动作”面板,输入下列代码: on (rollOver) { _parent.menu.stop(); } //当鼠标指针在按钮实例的范围之内时,让主场景中 的影片剪辑实例停止播放 on (rollOut) { _parent.menu.play(); } //当鼠标指针离开按钮实例时,让主场景中的影片剪 辑实例又开始播放
(1)新建一个Flash文档,并在场景中建立 一个影片剪辑实例,实例名设置为ball。 (2)单击按钮,打开动作面板,输入下列代 码: on (keyPress "<Left>") { ball._x -= 10; } (3)测试影片,按住左方向键不放,观看影 片剪辑实例的运动。 按下方向键就是一个事件,当这个事件发生 时,程序会对这个事件进行出理,让场景 中的影片剪辑实例的x坐标不断减少,形成 移动的效果。
(3)按住Ctrl键不放,用鼠标拖动复制出七 个按钮实例,选中全部按钮实例,调出 “对齐”面板,分别单击对齐面板上的 “上对齐”和“水平居中分布”按钮。 (4)保持按钮元件实例的选中状态,按F8键 转换为影片剪辑元件,并在“属性”面板 中把实例名设置为menu。双击该影片剪辑 实例,进入到元件的编辑状态,创建一个 补间动画。 (5)测试影片,可看到菜单不断运动,将鼠 标指针移向按钮,菜单停止运动,鼠标指 针离开按钮,菜单又开始运动。
相关文档
最新文档