flash脚本制作.ppt
第七章 flash动画脚本基础,7.1 动作面板简介,演示说明,7.2 常用术语,动作 在播放SWF文件时指示SWF文件执行某些任务的语句。例如:start();stop()等。事件 在很多情况下,动作不会独立执行,而是要提供一定的条件,就是要有一定的事情对该动作进行触发,才会执行这个动作,其触发作用的事情在ActionScript中称为事件。例如:鼠标的移动、按下与放开;键盘上某键的敲击等。,对象 是属性和方法的集合。每个对象都有各自的名称,并且都是特定类的实例。类 一系列相互之间有关联的数据的集合称为一个类。属性 用于定义对象的特性。例如:_visible用于定义影片剪辑是否可见,所有影片剪辑都有此属性。方法 被指派给某一个对象的函数,在一个函数被指派给一个对象后,它便可以作为这个对象的一个方法调用。,对象命名规则图表,函数 是可以向其传递参数并能够返回值的可重复使用的代码块。实例 属于某个类的对象。一个类可以产生很多个属于这个类的实例。类的每个实例均包含该类的所有属性和方法。例如:所有影片剪辑都是MovieClip类的实例,他们都有诸如_visible,_alpha这样的属性,以及gotoAndPlay()和getURL()这样的方法。,变量 是用来存储信息的存储器,脚本程序中的变量可以保存所有类型的数据,包括字符串、数值、布尔值(true或false)等。常量 也称为常数,和变量相对应,在程序编写过程中不能被改变,常用于数值的比较。关键字 是有特殊含义的保留字。不能使用关键字作为标识符。,7.3 Flash编程基础,在flash中,编写程序不可缺少的内容主要有事件、动作和对象。例如下面的语句:on(press)gotoAndplay(“scene 1”,1)但并不是所有的语句都具备这三个因素,一些语句可以只具有其中的一个或几个因素。,7.4 Action Script基本语法规则,一、点语法在ASP中,点“.”被用来指明与某个对象或影片剪辑相关的属性和方法,也用于标识指向影片剪辑或变量的目标路径。点语法表达式由对象或影片剪辑实例名开始,接着是一个点,最后是要指定的属性,方法或变量,例如,“dog._alpha”表示调用对象dog的_alpha属性。再例如:要使舞台上的实例“bird”移动到第24帧并停止在那里,可以使用以下程序:bird.gotoAndstop(24);,二、大括号,在ASP中,用“”把程序分成一块一块的模块,可以把括号中的代码看做一句完整的表达。例如:on(press)gotoAndplay(“scene1”,1);,三、分号和小括号,分号:在ASP中,用分号来结束一行语句。小括号:“()”用来放置参数。例如:gotoAndPlay(10)另外可以通过使用括号来改变ASP操作符的优先级顺序。,四、关键字和注释,关键字:前面已经讲过,在命名变量、函数或标签时,不能使用flash 中的保留关键字。这些关键字专门用于脚本语言中,并且必须以小写形式书写,不能写成大写形式。注释:注释语句以双斜杠“”开始。为语句添加注释可以帮助其他人理解用户编写的脚本。,ASP中的关键字,7.5 事件,编写程序不可缺少的内容主要有事件、动作和对象。在flash中,将任何导致动作发生的事情都称为事件。事件包括两类:鼠标事件 帧事件,什么叫做事件(Event)?举例来说:衣服脏了,车子脏了,我们就会“洗”衣服,“洗”车子,我们对车子、衣服都做了“洗”这个动作,这个“洗”的动作就是一个事件!所以我们“听”、“看”、“说”、“闻”等,这些动作都是一个“事件”。简而言之:凡是加诸于“对象”上的“动作”都是“事件”。在计算机的世界中,您单击一次鼠标键,就产生了一个点击一次鼠标键(Click)的事件。,对象名称.addEventListener(事件种类,处理函数名);例如建立影片剪辑,MovieClip的鼠标按一下事件监听器:var my_mc:MovieClip=new MovieClip();my_mc.addEventListener(“click”,mouseClick);function mouseClick(me:MouseEvent)trace(“你按了鼠标按钮“);上例,当我们在影片剪辑上按一下鼠标键时,就会调用mouseClick()函数进行事件处理。本例是在输出面板显示:“您按了鼠标按钮”这段文字。,一、帧事件,举例说明。注意:在flash中,只有关键帧才可以分配动作,而普通帧和空白帧是不可以分配动作的。定义关键帧动作的操作比较简单,不用为关键帧分配事件,可以直接将语句加入到右侧的语句栏中。在默认情况下,flash制作的动画播放到最后,会自动返回到第一帧,并且自动重新播放。但多数情况下,我们想让flash动画播放完成之后,停在最后的位置,这就需要在最后一帧加入stop语句。,二、鼠标事件,鼠标事件即响应鼠标的动作,能够响应鼠标事件的对象有按钮事件和影片剪辑按钮事件两种类型。A、定义按钮事件:举例说明。B、定义影片剪辑的鼠标事件。,常用的鼠标事件,CLICK 当发生一次单击鼠标键的动作时 DOUBLE_CLICK 当发生双击鼠标键的动作时MOUSE_CLICK 当发生按下鼠标键的动作时MOUSE_MOVE 当鼠标指针在物体范围内移动时,MOUSE_OUT 当鼠标指针移开物体的范围时MOUSE_OVER 当鼠标指针移入物体的范围时MOUSE_UP 当发生放开鼠标键的动作时MOUSE_WHEEL 当发生鼠标轮滚动的动作时,7.6 控制电影动作,在flash影片控制中包括最常用的动作,用于控制影片或影片剪辑元件中的时间轴。利用这几种常用的动作可以轻松实现交互式影片中最为常见的效果。,7.6.1 play语句,该语句的语法结构为:play()并且该语句没有参数,它的作用是使动画开始播放。举例演示。,7.6.2 stop语句,stop动作用于使影片停止播放。它既可以应用于影片中的时间轴,达到控制影片停止的目的。也可以应用于影片剪辑元件中的时间轴,达到控制影片剪辑元件停止的目的。举例演示。,7.6.3 goto语句,goto动作使电影跳转到时间轴上指定的帧或场景。分为gotoAndPlay和gotoAndStop两种。gotoAndPplay的作用将播放指针指向特定的场景和帧,并且从此开始播放,如果场景没有被指定,则播放指针指向当前场景的特定帧。该语句的语法结构为:gotoAndPlay(scene,frame)gotoAndStop语句的作用是当播放到指向特定的场景和帧时,停止动画的播放。如果没有指定场景,则停止指针将指向当前场景的特定帧。语法结构为;gotoAndStop(scene,frame),7.6.4 stopAllSound语句,stopAllSound动作用于停止影片中所有的声音效果,而不影响影片的视觉效果。该语句没有参数,通常用于制作静音按钮。,7.6.5 nextFrame和prevFrame,nextFrame动作用于使影片播放到下一帧停止。prevFrame动作用于使影片返回到上一帧并停止。nextFrame和prevFrame语句没有参数。它们一般应用于鼠标事件中,控制影片的前进或后退。,7.6.6 on语句,on语句用于设置鼠标的各种事件,实际上是事件而不是动作。双击on语句,在脚本编辑区出现on事件提示表,在提示列表中包含了应用于按钮实例的各种事件。,7.6.7 路径,在flash中用ASP编辑程序脚本时,经常需要对某对象实施一种动作或在某种场合下调用某对象。为了找到不同位置的对象,就需要引入路径的概念。Flash影片剪辑元件都具有一个特性:元件内可以嵌套另一个元件,为了说明这些元件的位置,引入“路径”的概念。在flash中路径分为 绝对路径 相对路径,A、绝对路径,绝对路径是在读取或调用任何变量或影片剪辑时,以主时间轴为起点,从外到内逐级用点语法写下路径。在flash中主场景的时间轴用_root来表示。例如,主场景内有一个名为Ball的影片剪辑元件,其路径可写为_root.Ball,当指定该实例转到第10帧处执行时,可以写成(10)。若Ball元件中还包含一个影片剪辑元件Ball01,而Ball01中也包含一个影片剪辑元件Ball001,若要使Ball001元件停止播放时,就可写成_root.Ball.Ball01.Ball001.stop()。,B、相对路径,相对路径是以当前发出指令的对象所在的时间轴为起点,去调用其他电影剪辑及其变量。在flash中,相对路径是以_parent开头的。_parent代表父目录,也就是包含该元件所在的时间轴。当在Ball01元件上要控制Ball001停止播放时,使用相对路径就可以写成_parent.Ball001.stop()。,7.7 动作脚本中的数据类型,定义 描述变量或动作脚本元素可以包含的信息的种类。1、基本数据类型:字符串、数值、布尔值等,基本数据类型都有一个不变的值,可以保存它所表示元素的实际值。2、引用数据类型:指影片剪辑和对象,它们的值可能发生更改,因此它们包含对该元素的实际值的引用。,字符型(string),字符型变量用来存储字符型数据,例如,name=“iming”。字符型数据是一个字符(字母、数字或标点符号)序列。在ASP语句中输入字符串,需要使用单引号或双引号括住。练习:判断下面的数据是否是字符型。name=“小赵”;home=“3,street”;life=“3?”;name=john,数值型和逻辑型,数值型(Number):用来存储数值型数据,如size=200。逻辑型(Boolean):用来存储逻辑型数据,如rain=true。逻辑型数据包括true和false。逻辑值与逻辑操作一起,常用在控制脚本运行的比较语句中。,对象型和影片剪辑型,对象型(Object):对象是属性的集合,不同的对象包含有不同的属性,每个属性都有名称和值。属性值可以是任何flash数据类型,甚至可以是对象数据类型。这样可以将一个对象嵌套在另一个对象之中。要指定对象及其属性,可以使用(.)运算符例如:在以下代码中,hoursWorked是weeklyStats的属性,而后者是employee的属性。影片剪辑型(Movieclip):用来存储影片剪辑型数据。它是惟一引用图形元素的数据类型。,7.8 变量,定义 是用来存储信息的存储器,脚本程序中的变量可以保存所有类型的数据,包括字符串、数值、布尔值(true或false)等。,7.8.1 变量命名规则,变量的命名主要遵循以下规则:变量名由字母(az,AZ),数字(09)和下划线“-”、$组成,中间不允许有空格,并且必须以字母或下划线开头。变量不能和关键字同名,并且不能是布尔值。并且在flash中关键字都是小写形式,若写成大写,flash会将它视为普通字符,而不作为关键字。例如,to是一个关键字,而TO却不是。变量名在其作用范围内必须是唯一的。在使用变量时应遵循“先定义后使用”的原则,即在脚本中必须先定义一个变量,才能在表达式中使用这个变量。flash对程序中大小写字母进行识别,即BOOK不等于book,建议尽量使用具有一定含义的变量名。,练习:data;I;J.smith;$zzu;3der;program_1;sum;abc;a=b;else;lotus_1_2_3;_123;for.,7.8.2 变量定义与作用域,一、变量的定义在flash中不必定义变量的类型,flash会在赋值时自动定义变量的类型。按作用范围,可分为 全局变量(Global)局部变量(Local)我们常用global.变量名来定义全局变量,我们常用var语句来定义局部变量。,全局变量和局部变量的语法结构,定义全局变量的语法格式为:global.变量名例如:global.myName=“lucy”定义局部变量的语法结构:var变量名=表达式例如:var m=20,7.8.3 变量作用域,前面已经学过,变量分为全局变量和局部变量,变量只能在其作用域中被引用。一个全局变量可以在所有的时间轴中共享,而一个局部变量仅在所属的代码块(即一个大括号)内作用。在程序中局部变量被大量地使用,因为使用局部变量可以有效地防止名称冲突。但在有些情况下,只能使用全局变量。例如,要在一个代码块中引用另一个代码块中的变量,或者要在整个动画中传递某个变量的值。,7.9 运算符和表达式,一、运算符和表达式运算符是能够提供对数值、字符串、逻辑值进行运算的关系符号。在flash中运算符有数值运算符,字符串运算符,比较运算符,逻辑运算符,位运算符和赋值运算符。表达式是用运算符将常量、变量和函数以一定的运算规则组织在一起的计算式。例如a=b。,数值运算符,数值运算符可以执行加、减、乘、除运算,也可以执行其他算术运算。如果加号两边的操作数其中之一属于“字符串”类型,则“”运算符将变成字符串连接指令例如:var str”20”+36 var str=“num”+36,比较运算符,用于比较表达式的值,然后返回一个布尔值。这些操作符最常用于判断循环是否结束或用于条件语句中。,逻辑运算符,逻辑运算符会比较布尔值,然后返回第3个布尔值。例如,如果两个操作数为true,则逻辑与运算符(&)将返回true。如果其中一个或两个操作为true,则逻辑“或”运算符(|)将返回true。,赋值运算符,用赋值“=”运算符给变量指定值,如,x=3;scale=60。,运算符的使用,1、运算符的优先级 当在一个表达式中使用了多个运算符时,就要遵循一定的规则。例如,“*”要在“+”之前被执行,因为乘法运算比加法运算有更高的优先级,ASP是严格遵循这个优先级来决定哪个运算符先执行,哪个后执行的。例如:myScore=(30+2)*2 程序的执行结果是?而:myScore=30+2*2 该程序的执行结果是?2、在运算过程中,如果运算符的优先级别相同,则从左到右计算。而赋值表达式是从右向左计算。,7.10 startDrag语句,startDrag语句可以使被定义的对象跟随鼠标运动。startDrag语句的格式为:startDrag(target,lock,left,top,right,bottom)Target:也就是对象,指要拖动的影片剪辑的实例名称。一次只能定义一个影片剪辑实例。lock 表示影片拖动时是否中心锁定在鼠标,值有 true,false;true 锁定,false 不锁定。left,top,right,bottom 就是影片拖动的左,上,右,下的范围。我们举个例子说明一下:startDrag(mc,true,100,100,300,300);就是拖动影片 mc,把影片中心锁定在鼠标,拖动的范围是(100,100)(300,300)的矩形框。如果这样写:startDrag(mc,true);拖动影片没有范围限制;,7.10.1 利用on、startDrag和stopDrag语句制作可以拖动的影片剪辑,StopDrag语句的使用方法与startDrag语句类似。打开方法:双击“动作”“影片剪辑控制”“stopDrag”。,7.11 浏览器和网络控制命令,1、fscommand命令它可以实现对影片浏览器,也就是Flash Player的控制。语法格式:fscommand(命令,参数);,fscommand可以执行的命令和参数,2、getURL命令,作用:为事件填加超级链接,包括电子邮件链接格式:getURL(URL,Window,method);url:String-可从该处获取文档的 URL。window:String 可选-指定应将文档加载到其中的窗口。您可输入特定窗口的名称,或从下面的保留目标名称中选择:_self 指定当前窗口中的当前帧。_blank 指定一个新窗口。_parent 指定当前帧的父级。_top 指定当前窗口中的顶级帧。method:String 可选-用于发送变量的 GET 或 POST 方法。,3、loadMovie和 unloadMovie,loadMovie命令是载入影片,unloadMovie命令是卸载由loadMovie载入的影片。loadMovie命令格式:loadMovie(URL,level/target,variblesl)URL:要载入的SWF文件、JPEG文件的绝对或相对URL地址。Target:目标电影剪辑的路径。目标电影剪辑将被载入的电影或图片所替代。Level:指定载入到播放器中的电影剪辑所处的级别。,阶层,在flash中,除了一层层的时间轴路径外,还有“阶层”概念。阶层专门用于“载入影片剪辑”以及“复制影片剪辑”。当从外部载入很多影片时,就无法利用时间轴上的“图层”来安排这些影片播放的前后顺序了,此时,可使用阶层来安排它们的前后顺序。阶层的数字愈大就愈靠近,会遮住阶层数字小的影片内容。在同一层中,同时只能有一部影片,即如果阶层2中已有一个影片,当再向此阶层中载入一个影片时,后载入的影片将完全取代阶层中的原影片。,最原始的主场景是阶层数是0,在ASP中使用_level0来指定,阶层1就使用_level1,阶层2使用_level2,依次类推。当需要命令阶层2中的ball开始播放时,代码为()。_level和_root并不是重复的,每个阶层中都是一个完整的动画,都有自己的_root、场景和元件。用户不能自己新增阶层来制作动画,只有在使用“载入影片剪辑”和“复制影片剪辑”指令时由系统产生新的阶层。,4、loadVariables,作用:从外部文件读入数据。外部文件包括文本文件、由CGI脚本生成的文本、ASP、PHP或PERL脚本。格式:loadVariables(url,level/“target”,variables)url:变量要载入的绝对或相对URL地址。,