第9章ActionScript入门提示:本期学习使用的是2.0版本的动作脚本语言。主要内容第一部分基础交互式动画制作9.1ActionScript简介9.2语法基础9.3动作面板的使用9.4给对象添加动作9.9基本命令和程序结构控制9.6影片剪辑控制主要内容第二部分高级交互动画制作9.7键盘控制9.8文本字段9.9组件9.10Flash模板第一部分ActionScript基础知识9.1ActionScript简介ActionScript是针对FlashPlayer的编程语言,它在flash内容和应用程序中实现了交互性、数据管理以及其它许多功能。9.1ActionScript简介Flash用“动作面板”来书写程序。例如:trace(我会编程了);这个语句的作用是,将括号中的内容(我会编程了)显示在输出面板上。ActionScript内部的词汇都会以蓝色表示。当你在输入程序时,如果输入AS内部词汇时不是蓝色的,说明你输错了。9.1.1动作脚本概述动作脚本(即ActionScript)是Flash内置的脚本语言,它是面向对象的编程语言。动作脚本可以添加在关键帧、按钮、影片剪辑元件上,通过事件响应来编写代码。ActionScript有自己的语法、变量、函数和表达式等,其结构也是由多行代码组成,每行语句由一些指令、运算符等构成。9.2语法基础学习AS编程,首先需要知道•变量、运算符和表达式•语法规范9.2.1变量的声明和使用•变量是指程序运行中可以改变的量。它是内存中存放数据的小房间的名称,变量由两部分构成:变量名和变量的值。•在ActionScript中不需要预先声明变量,你只需要直接使用它们,Flash在第一次遇到它们的时候会自动为它们创建变量。9.2.1变量的声明和使用变量的声明:在AS中,声明变量的格式如下:var变量名:数据类型;var变量名:数据类型=值;如:c=newColor(mcinstanceName);varmyVariable:Number=10;varmyString=“hello,world!”;c=39;b=“ActionScript”;9.2.1变量的声明和使用1.字符串(String):是一对用双引号包括起来的字母、数字、特殊字符的组合2.布尔值:是用来表示真假的数据类型。3.数字(int、uint、Number):int和uint是整形数值,专门用来处理整数,Number是用来处理浮点数。4.数组(Array):是可以做为数据的容器,它能包含更多的数据。5.对象(Object):包含大量复杂的信息,是ActionScript所有数据结构的基石。常用的数据类型9.2.1变量的声明和使用•变量的命名:•尽量使用有含义的英文单词作为变量名。•变量名采用骆驼命名法。•变量名不能是ActionScript内部定义的保留字和关键字。•例如,变量名firstName•通常,影片剪辑元件的命名以_mc结尾,如my_mc;按钮元件则是以_btn结尾;文本框则是以_txt结尾。9.2.2运算符、表达式及运用运算符用于对表达式中各个运算量进行各种运算的符号。通过运算符对一个或多个值计算新值。Flash提供的运算符主要有:•赋值运算符:=•算术运算符:+、-、*、/、%(模)•算术赋值运算符:+=、-=、*=、/=、%=•关系运算符:==、!=、=、=、、•逻辑运算符:&&、||、!逻辑与(&&):当两边表达式都为true时,返回值为true逻辑或(||):当两边表达式有一个值为true逻辑非(!):只有一个运算对象,在右边,其布尔值取反9.2.2运算符、表达式及运用由常量、变量、函数及变运算符按照运算法则组成的计算式。在flash中常用的表达式有以下几类:算术表达式:用算术运算符将常量、变量或函数连接起来进行数学运算的计算式。例如:vara=1*2+3;字符表达式:用字符串组成的表达式。例如:trace(“myName:”+“mary”);//用+号将两个字符串连接。关系表达式:用比较运算符或逻辑运算符进行运算,判断条件是否成立,常用于结构控制语句。例如:if(x==9){//判断x是否等于9gotoAndPlay(19);//跳转到19帧并开始播放}通常编程就是连续地写一系列指令,计算机按顺序地执行它。面向对象编程则是将程序分成块,分散到对象上。什么是对象?简单地说,对象就是我们在Flash中能看到的一切东西。舞台是一个对象,时间轴、影片剪辑、按钮、文本、位图都是对象。9.2.3ActionScript的类、对象、方法和属性所有对象都是由类定义的。每个类都包括了三个重要的元素:1.事件2.属性3.方法这是我们必须要了解的三个重要概念。9.2.3ActionScript的类、对象、方法和属性1.事件事件:在面向对象的编程中,程序被分散到了对象上。要计算机执行这些程序就需要事件来触发。当某件事情发生时就去做一些事情。这个某件发生的事情就是事件。比如在Flash中,放上一个“播放”按钮,当按钮按下时就播放一段动画。那么“当按下按钮”就是按钮对象的触发事件。例:事件在元件上的写法:on(事件名称){要执行的语句.....}9.2.3ActionScript的类、对象、方法和属性2.属性属性:描述对象的一组特征。比如,对象的大小,位置,颜色等。属性的书写规则是:对象名称.属性名称=值;最常用的属性有:_x,_y:分别是对象在舞上台的x,y坐标,这两个属性可以确定对象在舞台上的位置。_xscale,_yscale:分别是对象在舞台上沿x,y轴方向的缩放比例,例如:my_mc._xscale=90;这表示,元件my_mc的宽度缩小到原来的90%9.2.3ActionScript的类、对象、方法和属性3.方法方法:是指对象具有的行为和能执行的动作。面向对象的软件开发是基于这样的概念:系统应由对象来创建,对象拥有数据和功能。属性定义数据,而方法定义功能。9.2.3ActionScript的类、对象、方法和属性9.2.4语法规范1.点语法:在ActionScript中,点(.)被用来指明与某个对象或电影剪辑相关的属性和方法。它也用标识指向电影剪辑或变量的目标路径。点语法表达式由对象或电影剪辑名开始,接着是一个点,最后是要指定的属性、方法或变量。9.2.4语法规范1.点语法:例1,表达式ballMC.x是指电影剪辑实例ballMC的_X属性,_X指出编辑区中电影剪辑的X轴位置。例2,表达式shoppingCart.form.submit=truesubmit是在电影剪辑form中设置的一个变量,而form又是嵌套在电影剪辑shoppingCart中的电影剪辑。表达式的作用是设置实例form的submit变量的值为true9.2.4语法规范2.分号:ActionScript语句用分号;结束,但如果你省略语句结尾的分号,Flash仍然可以成功地编译你的脚本。如,下面的语句用分号结束:colum=passedDate.getDay();row=0;同样的语句也可以不写分号:colum=passdDate.getDay()row=09.2.4语法规范3.大括号:ActionScript语句用大括号{}分块,如下面的脚本所示:on(release){myDate=newDate();currentMonth=myDate.getMonth();}9.2.4语法规范4.圆括号:定义一个函数时,要把参数放在圆括号中。如,functionmyFunction(name,age,reader){…}如,调用一个函数时,也要把要传递的参数放在圆括号中:myFunction(Steve,10,true);圆括号可以用来改变ActionScript的运算优先级,或使自己编写的ActionScript语句更容易阅读。9.2.4语法规范分号、大括号、圆括号,可以通称为分界符。9.2.4语法规范9.严格区分大小写字母:在ActionScript中要严格区分字母大小写。例如,varmyString:String;VarMyString:String;是两个完全不同的变量。9.2.4语法规范6.注释:注释就是程序中并不参与执行的那些代码。它可以用来提醒你某些代码的作用,方便你组织和编写脚本,有助于别人对你编写的脚本的正确理解。注释以双斜线//开头,在//后面你可以输入任意的文本和符号,Flash会自动将注释部分用灰色标示。如下所示:myMC._alpha=90;//将影片剪辑myMC的透明度设置为90%9.2.4语法规范7.关键字:ActionScript保留一些单词,专用于与本语言之中。因此,不能用这些保留字作为变量、函数或标签的名字。下表列出了ActionScript中所有的关键字:breakcontinuedeleteelseforfunctionifinnewreturnthistypeofvarvoidwhilewith9.2.4语法规范8.常量:常量有其值永不改变的属性。常数用大写字母列表示。例如,常数BACKSPACE、ENTER、QUOTE、RETURN、SPACE和TAB是Key对象的属性,指键盘上的键。要测试用户是否在按Enter键,可使用下面的语句:if(keycode()==key.ENTER){alert=你准备好了吗?controlMC.gotoAndStop(9);}9.3动作面板的使用执行【窗口】→【动作】命令,打开动作面板。或者按F9快捷键。1、动作面板9.3动作面板的使用执行【编辑】→【首选参数…】命令,打开如图对话框,可设置语法颜色等参数。1、动作面板9.3动作面板的使用1双击所需命令2直接拖动命令至右窗口3直接在此窗口输入4单击此+号,选择命令2、添加“动作”的4种方法:练习为便于熟悉脚本的构成和动作面板的使用,输入并运行以下程序代码。当用户松开按下的按钮时,执行它。其中没有包含特殊的函数,但是它体现了ActionScript的主要结构。on(release){varmyNumber=7;varmyString=FlashMXActionScript;for(vari=0;imyNumber;i++){trace(i);if(i+3==8){trace(myString);}}}9.4给对象添加动作•“动作”面板中可以为以下三种对象设置动作。1.帧2.按钮3.影片剪辑1、帧•写在关键帧上面的AS,当时间轴上的指针走到这个关键帧的时候,就写在这个帧上面的AS就被触发执行了。•操作方法就是点选关键帧,然后打开AS面板。•常见的例子:假设有一个动画,要让它在播放完同时停止,那么,你要做的就是在这个动画的最后一帧写ASstop();2、按钮:•不同于帧上面的AS,按钮上面的AS是要有触发条件的。•操作方法是点选目标按钮,然后打开AS面板。•写在按钮上面的AS一定是这种格式的:on(事件){要执行的代码}•下面举个例子。例:•假设有个按钮,效果是按下按钮后停止播放,那么步骤如下:做一个按钮,放到主场景,点选按钮,然后打开AS面板。现在如果也在按钮上写stop();那么,输出的时候就会提示错误。正确的应该这样写on(release){stop();}这里要比帧的动画多这些代码:on(release){},整个代码翻译过来就是:当(释放鼠标){停止}绿色的代码表示鼠标的触发事件事件之一,这里用的是release释放按钮的常用事件Press(单击)鼠标经过按钮时按下鼠标按钮release(释放)鼠标经过按钮时释放鼠标按钮releaseOutside(在按钮外释放)当鼠标在按钮之内时按下后,将鼠标移到按钮之外,此时释放鼠标按钮rollOut(鼠标滑出)鼠标滑出按钮区域rollOver(鼠标滑入)鼠标滑过按钮dragOut(拖动滑出)鼠标滑过按钮时按下鼠标,然后滑出此按钮区域dragOver(拖动滑入)鼠标滑过按钮