




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Flash动画第5章 ActionScript 编程本章要点:l 介绍ActionScript编程基础。l 掌握ActionScript的基本操作方法。l 初步学习ActionScript程序流程的控制。l 怎样为对象赋予Action。l 掌握ActionScript对键盘与鼠标的控制。l 掌握ActionScript对影片实例的控制。l 掌握ActionScript对声音的控制。5.1 关于ActionScript5.1.1 ActionScript是什么ActionScript是一种编程语言。ActionScript是世界上著名的媒体软件开发商Macromedia公司开发的Flash编程语言。我们所知道的计算机语言实在是太多了,什么BASIC、PASCAL、C,为什么又产生了一个ActionScript ?大家知道,我们使用的交通工具也是太多了:汽车、轮船、飞机,人们又研制了汽垫车、飞翼船、航天飞机,明天还有更多的交通工具要产生。无论我们拥有多少交通工具,也一定会欢迎新的交通工具的到来!ActionScript 究竟是什么意思?ActionScript 的意思非常简单明确:Action的意思是“动作”,Script的意思是“描述”,两个单词复合到一起就是“动作描述”。简而言之,ActionScript就是一种动作描述语言。ActionScript描述的是什么呢描述的是对象。5.1.2 面向对象编程1. 面向对象编程的概念目前,我们的程序设计一般根据程序设计方式大致可以归纳为两大类:程序化程序设计(Procedura Programming)与面向对象程序设计(Object-oriented Programming)。程序化程序设计的关键在于“程序化”,一般是针对所要解决的问题,列出解决第一个问题的程序方案、解决第二个问题的程序方案、解决第三个问题的程序方案,以此类推。像这样的程序化设计语言很多,例如:BASIC、PASCAL、C、FORTRAN等。图5-1 对象面向对象编程的关键在于“面向对象”。对程序设计而言,什么是对象呢?这个概念一定要弄明白。其实,从英文含义来讲, Object既可以翻译成“对象”,也可以翻译成“物体”、“目标”。生活中,我们面对的汽车、飞机、小动物、一本书、一只笔等都是对象。在Flash 8中,一切图形图像、声音、文字、按钮、时间轴上的帧格等也都是对象,如图5-1所示。2. 对象的类别在Flash中,ActionScript的对象究竟有哪些类别呢?ActionScript的对象共分成四大类:l Core(核心对象):这些对象是常用的对象,包括逻辑对象(Boolean)、数组对象(Array)、日期对象(Date)、字符串对象(String)、数学对象(Math)等。l Movie(电影对象):实际指Flash中的动画剪辑对象(MovieClip)、颜色对象(Color)、按键对象(Key)、鼠标对象(Mouse)、舞台对象(Stage)、文本域对象(TextField)和文本格式对象(TextFormat)。l Client/Server(客户机/服务器对象):有关在客户机和服务器之间建立连接对象、同步数据对象等。l Authoring(编辑对象):指自定义动作对象和即时预览对象。3. 对象的属性与方法我们知道,汽车是交通工具,靠轮子在公路上行驶。汽车有它的属性:汽车的颜色、汽车的品牌、汽车的型号、汽车的马力、汽车的速度;汽车有它的操作方法:加速、减速、倒车、转弯、开前灯、关尾灯。当我们面向对象编程时,那些对象可以被程序指令控制在屏幕上显示、运动。对象有它的属性(Properties):位置、宽度、高度、透明度;对象也有它的控制方法(Method):对于程序中一小段一小段语句,都是控制对象的运动、属性改变、显示与否。不同的对象,有不同的属性。一个对象,可以有多种属性。电影剪辑对象有电影剪辑的属性,例如:电影剪辑的位置、电影剪辑的高度、电影剪辑的URL地址。数学对象有数学对象的属性,例如:自然对数的底数E、圆周与直径的比值PI、以e为底数的自然对数LN。在后面内容里,笔者会针对不同对象的控制,解释不同的属性。5.1.3 ActionScript与其他编程语言的差异说来说去,究竟ActionScript编程语言来自哪里?它与其他语言有什么不同?学过JavaScript语言的人认为ActionScript很像JavaScript语言;学过C语言的人认为ActionScript很像C语言。其实,严格地讲ActionScript编程语言是由多种语言整合出来的一种语言。ActionScript编程语言既吸收了许多语言的特点,甚至于与某些语言有联系,但它们之间的区别是显而易见的。以JavaScript为例,ActionScript 采用了和JavaScript一样的ECMA-262(the European Computers Manuracturers Association)语法标准,使我们看起来二者很相似。例如,ActionScript与JavaScript的区别和联系有:ActionScript不支持浏览器相关的对象,如Document、Anchor、WindowsActionScript不支持全部的JavaScript的预定义对象。ActionScript不支持JavaScript的函数构造。ActionScript只能用eval语句来处理变量,从而直接得到变量的值。在JavaScript中,如果把一个没有定义的变量转换成字符串String类型,会得到一个未定义的变量,在ActionScript中则返回一空字符串。ActionScript不支持Unicode编码。5.2 ActionScript编程基础在使用ActionScript编程之前时,我们必须先对它的语法基础进行了解。5.2.1 ActionScript语法基础1. 常用名词动作(Action):也称为指令。目的在于说明当程序执行时要做些什么事。例如,gotoAndStop动作就可以将播放磁头跳转到指定的某一帧或帧标记并停止播放。对象(Object):是ActionScript描述的目的物,是属性的集合。在Flash中,所有图形图像、声音、文字、视频等都可以视为对象。ActionScript编程过程中要控制的每个对象都具有自己的名称和值。属性(Properties):反映对象的性质、特征、变化。例如,_xmouse返回鼠标的x坐标位置。事件(Events):在影片播放过程中发生的动作或某些条件满足时的交互响应。例如,当影片载入时、当播放磁头到达某一帧时、当用户单击按钮或影片实例时、当用户敲击键盘上的某一键时,都可以称产生了某一事件。实例(Instances):也称为实体、替身等。实例是从符号库(也称素材库)中的元件引入到舞台上对象。参数(Arguments):是用于装载值的代码,在函数中将参数当成具体的值来执行。例如:Funtion show (name, score) showMC.display = name;showMC.score = score;这里,括号中的name、score都是参数(也是变量)。常量(Constants):常量即不会改变的量,它对于值的比较非常有用。变量(Variables):顾名思义,变量是可以改变的量。变量可以创建、修改和更新。更通俗地讲,你可以想象变量是一个个装着数值或数据的盒子,每个盒子都必须有它自己的名称(变量名),必须使用变量名称来存取这个变量。例如,我们设定var01为一个变量盒子,这个变量盒子中装有一个字符串“How are you?”,我们这样定义变量var01:var01 = How are you? ;我们再将这个变量盒子中装有的数据赋给另一个变量盒子var02:var02 = var01;现在,变量var02的值也是字符串“How are you?”了。将这两个指令合起来,就是一段程序:var01 = “How are you?”;var02 = var01;每个变量都有它自己的生命周期或说有效范围(Scope),在有效范围中你可以存取和使用该变量,出了有效范围就找不到该变量了(或说该变量的生命已经结束)。函数(Functions):函数简单地说就是代码块。将实现某一种能执行特定功能的代码放在一起用一种特殊的方式定义、封装,最后命名这一段代码为函数。函数可以在程序中重复地使用,这样就大大减少了代码量,增加了效率,同时也减少了因为代码的书写引起的错误。同时,通过传递参数的办法,可以让函数处理各个不同的数值,从而返回不同的值。例如:getProperty函数就可以使用电影剪辑的实例名称和属性名称,返回对象的属性值;getVersion函数可以返回当前播放电影的Flash播放器的版本号。关键字(Keywords):ActionScript语言保留了一些单词作为特殊用途,你不能将这些关键词作为变量、函数或标签的名字作用它们。下面是ActionScript的关键字。表5-1 ActionScript的关键字BreakCaseContinueDefaultdeleteelse truevoidfalsewhileforfunctionin ifvarwithreturnnewthis typeof表达式(Expressions):表达式是Flash可以取得和返回值的任何语句。用户可以合并运算符和值、调用函数等方法创建表达式。如果在动作面板的普通模式下编写表达式,则请用户确认已经选中了表达式(Expressions)复选框,否则在参数框中包含的就只是文本字符串,如图5-2所示。图5-2 表达式复选框2. 常用语法符号ActionScript有自己的语法符号,认识常用语法符号可以很方便地了解ActionScript编程规则。表5-2 常用语法符号符号名称说 明.点功能:指向一个对象(通常是对MovieClip)的某一个属性或方法。例:如果有一个影片实例的名称是“fish”,_x和_y表示这个实例在场景中的x坐标和y坐标,就可以用如下语句得到它的x位置和y位置。_root.x=_root.fish._x ;_root.y=_root.fish._y ;其中:“_root.”表示主时间轴的绝对路径。“_parent.”表示父场景(即上一级场景)的相对路径。 大括号功能:用“ ”把程序分成一块一块的模块。可以把括弧中的代码看作是一句表达。例: if (count18) count = 1;在上面程序中,大括号内 的“count = 1;”就是一句表达。;分号功能:ActionScript以分号作为语句的结束。例:下面各语句就是以分号结束的。 itncock_W=_xscale ;itncock_H=_yscale ;当然,如果用户忽略了分号,Flash 8也能正确编译脚本。只是最佳做法还是应该使用分号。,逗号功能:ActionScript以逗号表示一种分隔符号。例:上面关于分号的示例语句也可以用逗号分隔后写在同一行。 itncock_W=_xscale, itncock_H=_yscale ;( )圆括号功能:“( )”来放置参数。如果括弧里面是空的,就表示没有任何参数传递。例:程序片段 on (press) startDrag(stars, true); 说明当按钮按下去时,影片实例可以被鼠标拖动。这里括号( )中“stars”、“true”都是参数。又例:程序片段 on (press) _root.dh.stop(); _root.pd.stop(); 中stop后的空括号( )表示没有任何参数。/批注功能:给脚本添加批注信息,可以使代码更容易阅读。凡是批注符号之后的内容,Flash 8在播放时并不执行。例:下面的语句后面就有批注,说明该语句的动作含义。 cock.stop(); /主时间轴上电影剪辑cock停止运动5.2.2 ActionScript的数据类型数据类型描述了一个变量或者一个元素能够存放什么类型的数据信息。Flash 8的数据类型分为基本数据类型和指示数据类型。基本数据类型包括:字符串(String)、数字(Number)、和布尔(Boolean)。指示数据类型包括:对象(Object)和影片剪辑(MC)。其中基本数据类型是实实在在地能够被赋予一个不变的数值;而数值数据类型则是一些指针的集合,由它们指向真正地变量。下面介绍Flash 8中的数据类型。1. 字符串(String)类型字符串,顾名思义,就是字符的序列,数字、字母、符号排列起来就成了字符串。在Flash 8中,字符串是用双引号封闭的。也就是说把一些字符用双引号引起来就构成了一个这样,Mystring就成了一个字符串变量,它的值就是引号里面的字符串。值得一提的是,可以用“+”(相当于add运算符)把两个或者多个字符串连在一起,例如:Mystring= this is + the sample string +!这样的效果和第一次生成的字符串是一样的。Mystring的值还是“this is the sample string !”需要注意的是,在Flash 8中虽然不区分大小写,但是字符串中内容的大小写是会被区分的,如“GoodBye”和“goodbye”这两个字符串是不一样的。这里要特别介绍一类特殊的字符转意字符。这些字符已经失去了字符原来的意义,它们的出现是代表了一定的功能。举个例子说:如果在一个字符串中键入“r”,那么这两个字符不会被显示出来,但是从它开始的地方起,整个字符串会被分成两行,而“r”的意义就是回车。可以看看下面的例子:TestString= this is the test+r +string显示结果是这样的:this is the teststring在这里,“r”字符串相当于是一个回车。表5-3列出了类似这样的符号。表5-3 转意符号转意符号操作b退格f制表符n换行符r回车符tTab键双引号单引号斜框杠2. 数字(Number)类型数字类型是很常见的类型,其中包含的都是数字。在Flash 8中,所有的数字类型都是双精度浮点类。可以用数学运算来得到或者修改这个类型的变量,比如说+、-、*、/、等。Flash 8提供了一个数学函数库,其中有很多很有用的数学函数。它们都放在Math这个Object里面,可以调用。如:result=Math.sqrt (100);在这里调用的是一个求平方根的函数,先求出100的平方根,然后赋值给result这个变量,这样result就是一个数字变量了。关于Math的其他函数将在后面的相应章节中介绍。3. 布尔(Boolean)类型和其他编程语言一样Flash 8中的布尔类型也只有两个值,一个是true(真),一个是false(假)。在Flash 8中,如果需要也可把它们自动转换成1或者0来表示。这种类型多用于If语句中,用来控制程序流程:onClipEvent (enterFrame)if(name=true) & (pass=true) gotoandplay(2);布尔类型一般都在关系表达式或者逻辑表达式中使用到,其中的判断规则和一般的高级语言相似。4. 对象(Object)类型对象是属性的集合,每一个属性都有自己的名字和值。这些值可以是任何的数据类型,甚至是对象类型。这样就可以嵌套使用对象类型,也就是说一个对象可以有一个或者多个属性是对象类型。一般可以使用“.”语法来得到属性的值或者调用对象的方法,也还可以使用“ ”运算符调用对象的属性和方法。请看如下代码:Tom.workstatus.athome=true;在上面的代码中,athome是workstatus的属性,而workstatus又是Tom的属性。上面这个例子通过“.”语法一层一层地达到了想要的属性。用户可以根据程序的需要创建自己的类,也可以通过实例化类的方式来构造对象。对象具有的所有属性与方法都可以通过一定的规则来引用或者调用。当不再需要对象时,可以删除(Delete)它,以便给其他的对象留出空间。面向对象让软件工程具有很大的优越性,很多时候只需编写一次代码就可以反复重用,而在非面向对象编程(OOP)的眉况下,程序员则多半要在应用程序内部各个部分反复多次编写同样的功能代码。所以,面向对象编程减少了编写代码的总量,从而加,央了开发的进度,同时降低了软件中的错误量。当然了,面向对象编程也有缺点,就是当修改基类时,其继承类大都会受到影响,大量的代码需重新测试与修改。既然对象这么复杂,那么有没有已经预先定义好的对象模型来套呢?答案是肯定的,首先是先得学习并理解那些已经定义好的对象模型,然后你就可以随心所欲地创建属于自己的、喜欢的、用得上的对象了。这些已经定义好的对象叫做内置对象。一般来说这些内置Flash 8对象可以访问和处理某些特定种类的信息。大多数内置对象都具有一组方法(分配给对象的函数),可以调用这些方法,也可以返回相应的属性值或执行相关动作。例如,Date对象会从系统时钟返回信息,而Sound对象可以控制影片中的声音元素。某些内置对象还具有属性,可以读取这些属性的值。例如,Key对象具有恒定的值,代表键盘上的键。每个对象都具有自己的特性和能力,从而使它们在影片中很有用。内置Flash 8对象分为4个类别,它们都在动作面板(Action)的“对象”(Object)文件夹中:核心(Core)、影片(Movie)、客户端服务器(ClientServer)和创作(Authoring),如图5-3所示。图5-3 对象类型(1)核心对象(Core)它包括以下对象:l Arguments:调用参数对象。它是一个数组,其中包含作为参数传递给任何函数的值。l Array:数组对象。可以连续记录数据,并对这些数据进行一系列的操作。l Boolean:布尔对象。主要是一些布尔变量向其他变量进行类型转化的功能。l Date:日期对象。主要是对日期、时间的一些操作。l Function:函数对象,对函数的一些操作。l Math:数学对象。包括一些经常用到的数学函数比如三角函数、开方、对数函数等。l Number:数值对象。包括了几个数值常量。l Object:自定义对象。用户可以用这个来定义自己的对象。l String:串对象。它能够使用String对象的方法和属性来操作原始字符串。(2)影片对象(Movie)影片对象是动作脚本专用的。这些对象包括如下一些对象。l Accessibility:访问能力对象。它是一些方法的集合,据说这些内容是给残疾人用的。l Button:按钮对象。可以直接对按钮编写事件驱动函数。l Capabilities:效力能力对象。系统多媒体的一些兼容属性。l Color:色彩对象。它能够设置或者取得电影剪辑的RGB颜色值。l Key:键盘对象。可以控制并口向应键盘的一些操作,并根据这些操作完成一定的功能。l Mouse:鼠标对象。支持鼠标的一些操作与事件驱动。l MovieClip:动画对象。提供了大量动画需要的方法与事件驱动。l Selection:选择对象。可以设置和控制光标在Flash 8字段中的位置。l Sound:声音对象。支持声音的各种复杂操作与事件驱动。l Stage:场景对象。主要包括了动画场景中的一些属性。l System:系统对象。包括了一些系统的属性。l TextField:文本对象。控制文本的一些字体、边框和颜色等。l TextFormat。文字格式对象。文字的一些具体格式控制。(3)客户端服务器对象(ClientServer)可以用来在客户机和服务器之间进行通信的动作脚本对象。它包括的对象有下面几种。l LoadVars:取得变量对象。用于与后台程序比如PHP、ASP、JSP等进行数据通信。l XML:XML对象。能识别当今最流行的XML文档的对象。l XMLSocket:套接字连接对象。用于与后台建立起套接字连接。(4)创作对象用于自定义Flash 8创作应用程序。这里只有如下两个对象。l CustomActions(自定义动作):这个对象的方法使得在Flash 8创作工具中播放的Flash电影剪辑可以管理该创作工具注册的任何自定义动作。l LivePreview(可预映):暂时只有一个onUpdate函数。影片剪辑实例在动作脚本中以对象表示,它们的默认对象类是MovieClip。要更改影片剪辑的类型,请参阅创建继承。你可以调用内置影片剪辑方法,就像调用任何其他动作脚本对象方法一样。有关每个对象的详细信息,可以查阅“帮助”菜单的联机“动作脚本字典”中相应的各个条目。5. 影片剪辑(MovieClip)类型其实这个类型是对象类型中的一种,但是因为它在Flash 8中处于极其重要的地位,而且使用频率很高,所以在这里特别拿出来作为一个类型来讲。在整个Flash 8中,只有MC是真正指向了场景中的一个物理元素影片剪辑。通过这个对象和它的方法以及对其属性的操作,就可以控制动画的播放和MC的状态,也就是说可以用脚本程序来书写和控制动画。例如下面的语句:onClipEvent(mouseUp)myMc.prevFrame ();当松开鼠标左键的时候,影片剪辑myMc就会跳到前一帧。5.2.3 Flash 8的变量规范和其他编程语言一样,Flash 8脚本中对变量也有一定的要求。不妨将变量看成是一个容器,可以在里面装各种各样的数据。在电影播放的时候,通过这些数据就可以进行判断、记录及储存信息等。变量可以装载这样一些数据类型:Number、String、Boolean、Object、MovieClip。1. 命名变量变量的命名主要遵循以下3条规则:l 变量必须是以字母或者下划线开头,其中可以包括“$”、数字、字母或者下划线。如_myMc、e3game、worl$dcup都是有效的变量名,但是!go、2up、$food就不是有效的变量名了。l 变量不能和保留关键字同名(注意Flash 8是不区分大小写的),保留关键字列表见表5-1,并且不能为true或者false。l 变量在自己的有效区域里必须唯一。2. 变量的赋值在Flash 8中,不强迫定义变量的数据类型,也就是说当把一个数据赋给变量的时候,这个变量的数据类型就已经确定下来了。如语句:S=23;将23赋给了s这个变量,那么Flash 8就认定s是Number类型的变量。如果在后面的程序中写了如下语句:。s = this is a string那么从现在开始,s的变量类型就变成了String类型,其中并不需要进行类型转换。而如果申明一个变量,又没有被赋值的话,这个变量不属于任何类型,在Flash 8中称它为未定义类型Undefined。在脚本编写过程中,Flash 8会自动将一种类型的数据转换成另一种类型。如:this is the + 7 + day;上面这个语句中有一个“7”是属于Number类型的,但是前后用运算符号“+”连接的都是String类型,这时候Flash 8就会把“7”自动转换成字符,也就是说,这个语句的值是:“this is the 7 day”。原因是使用了“+”运算符,而“+”运算符在用于字符串变量时,其左右两边的内容都是字符串类型,这时候Flash 8就会自动做出转换。这种自动转换在一定程度上可以省去程序编写的不少麻烦,但是也会给程序带来不稳定因素。因为这种操作是自动执行的,有时候可能就会对一个变量在执行中的类型变化感到疑惑,到底此时那个变量是什么类型的变量呢?Flash 8提供了这样一个trace ( )函数进行跟踪变量,可以使用这个语句得到变量的类型。具体使用形式如下:trace (typeof (variableName);这样就可以在Output时,在窗口中看到需要确定的变量的类型。同时读者也可以自己手动转换变量的类型,使用Number和String两个函数就可以把一个变量的类型在Number和String之间切换,如:s=1234;number(s);这样,就把s的值转换成了Number类型,它的值是1234。同理,String也是一样的用法:q=1234;string(q);这样q就成了String变量,它的值是“1234”。3. 变量的周期所谓变量的周期是指变量在哪一个具体的范围里有效。Flash 8有两种不同周期的变量,即局部变量和全局变量。它们的区别在于:全局变量在整个Flash 8动画中都可以被操作,而局部变量只能在它定义的那个区域被操作,通常是在一个“”之间。提示:全局变量和局部变量的区别与变量的数据类型没有关系,任何一种数据类型的变量都可以是局部变量也可是全局变量。在Flash 8中用var来申明局部变量,举例如下:function.makeDays()var i;for(i = 0; i=10)loadMovie(winner.swf, 5);elseloadMovie(loser.swf, 5);当score大于等于10时,装载电影winner.swf,当为其他值的时候就装载loser.swf。这样就可以对程序进行分流。Flash 8中的比较运算符如表4.3所示。表5-4 比较运算符比较运算符操作大于=大于等于2. 字符串操作正如前面例子中讲到的,用“+”可以将两个字符串连接在一起。如:Congratulations! + Tom;这个表达式的值是:“Congratulations! Tom”特别是可以用前面所说的比较运算符、=、和10)&(_framesloaded50)play()这样就只有当两个条件都满足时,才会执行下面的语句。也就是说,只有当i大于10和电影装载到50帧的时候才会执行。5. 位运算符位操作是对数字的底层操作,在Flash 8中提供了7种位运算符,如表5-7所示。表5-7 位运算符位运算符操作&按位取与|按位取或按位取异或按位取非右移右移后空位用0填补6. 相等比较和赋值可以用“= =”来比较两个变量是否相等,运算符“= =”返回的是布尔变量,也就是true或false。如果两边被比较的是字符串,Flash 8比较它们的每个对应位置上的字母是不是完全相同,如果是对象类型或者是数组类型,Flash 8比较它们是否都指向一个对象。注意“=”运算符和“= =”是完全不同的。定义变量中使用“=”来进行赋值,这一点在前面已经多次用到。如:Pass = klasn24;在具体操作中,可以用多重的赋值来给多个变量进行赋值,如:a = r = s = d = e;这样a、r、s、d、e就会具有一样的值。Flash 8还有一种特殊的赋值方式,就是复合赋值,如:x += 15;这个语句和下面的语句是一个效果:x = x +15也就是相当于将x加上了15,然后再赋给x。Flash 8所有的赋值语句和判断相等于语句如表5- 所示。表5-8 赋值语句和判断相等语句运算符操 作= =等于。!=不等于。=赋值。+=相加后赋值。-=相减后赋值。*=相乘后赋值。=取模后赋值。/=除以后赋值。=按位右移后赋值。=右移,并用零填充后赋值。=按位取异或后赋值。|=按位取或后赋值。&=按位取与后赋值。7. “.”和“ ”方括弧这是一个很重要的语法成分,可以使用“.”或者是“ ”来取得任何一个对象的属性。先看下面的代码:year.month = July;year.month.day = 20;可以看到,上面的代码对year这个对象中的month以及month中的day进行了赋值。同理,也可以用如下的代码达到同样的效果。yearmonth = June;yearmonth day = 9;但是,“.”和“ ”的操作在原理上是不一样的。“.”语法是直接对属性进行操作,而运算符“ ”是先对括弧里的变量进行求值,然后再根据值来找到属性。细心的读者可能已经想到,不妨可以通过“ ”动态地生成或者访问对象的属性了。如:cityindex = = Green;在以上的代码中,index可以是一个变量,这样就可以根据变量的不同取值来访问city的成员,并且对它进行赋值操作。同时,“ ”是可以嵌套使用的,可以利用运算符“ ”的这个特点来模拟多维数组,如:boardrowcolumn在上面的代码中,用了两个变量对board进行定位,相当于将board用行和列进行了分割,这样就可以实现多维数组的模拟。8. 运算符的优先级何谓优先级?优先级的提出是为了解决这样的问题:当两个不同的运算符放在一起,同时对一个变量进行处理,决定谁先处理,谁后处理。这种问题经常在数学操作中碰到。在Flash 8的脚本中,运算符的优先级和数学规则是一样的,小括号优先级最高,乘除第二,其次是加减。如:result = 1+4*3;经过赋值后变量result的答案是多少呢?应该是13。result=(1+4)*3这时变量result的值变为15。这样又有另一个问题:如果两个运算符的优先级是一样的时候怎么办呢?于是又提出了结合性的问题。所谓结合性,就是指运算符在处于同一优先级的时候,如何结合变量,其实也是一个优先的问题。如:result = 12 / 2*3;根据数学常识可以知道答案是18。Result = 12 / (2*3);变量值将变为2。为什么会有这种差异呢?这就是结合性的问题。使用的乘除法都是从左向右(left to right)结合的,所以在第一个语句中会先计算122而不是2*3。也就是说乘除法是先进行左边符号的运算再进行右边符号的运算。5.3 ActionScript编程的基本操作前面介绍了ActionScript的基本概念和编程基础知识,现在我们要开始编程了。我们早就知道Flash 8做出来的动画令人心旷神怡、令人久久陶醉我们要开始编程了!真的开始编程,又不知道从哪里下手。“工欲善其事,必先利其器”还是让我们先来认识ActionScript的编程环境。对影片编辑、按钮、帧格等编写动作指令时,都要在Action面板上进行操作。下面先了解面板的基本构成。在ActionScript编程过程中,有两种编辑模式:一种是便于初学者使用的一般模式(Normal);另一种是便于专家使用的专家模式(Export)。因此,动作(Action)面板通常有两种面板模式。5.3.1 一般模式(Normal)一般模式也称为标准模式或普通模式。如图5-5所示,是在一般模式(Normal)下动作面板的各个组成部分。图5-5一般模式动作面板的各个组成部分在Action一般模式面板中:l 对象说明栏:对象说明栏将说明动作对象的类别、名称和简单介绍。l 指令说明栏:指令说明栏说明了动作指令的作用。l 相关参数设置栏:相关参数设置栏只在一般模式面板上才有,专家模式面板上没有这一栏。当用户使用不同指令时,相关参数栏的内容发生变化,但总是显示动作指令的相关参数。l 动作面板选项:点击此处,会弹出动作面板的许多选项命令。这些选项命令都是关于面板操作的,读者不妨先打开它看一看。l 脚本窗口:此窗口中显示动作指令。l 程序代码行号:如果想了解程序中某指令所在的命令行,可以点击按钮,在随后出现的快捷菜单中选择“查看行数”命令,就可以在脚本窗口中显示各指令所在的行数。在脚本窗口的上方,还有几个按钮。如图5-6所示这几个按钮主要是编程操作的工具,在编程时大有用处。图5-6 编程操作的工具按钮这些常用工具的作用是:l 增加指令:在所在命令行下面添加动作和语句。l 删除选取的指令:删除当前选取的指令行。l 寻找:在脚本中寻找字符。l 取代:替换脚本中的字符。l 选择目标路径:插入目标路径。l 调试选项:可以设置和移除断点。l 切换到专家模式并显示行号:点击此按钮将弹出一个快捷菜单,可选择由一般模式面板切换到专家模式面板和显示命令行数的命令。l 将选取的指令下移:将当前代码行向下移动一行。l 将选取的指令上移:将当前代码行向上移动一行。l 指示当前描述:此按钮是一个开关按钮,点击它时将在指示当前描述或不指示当前描述二者之间转换。在一般模式面板中怎样编写Action动作指令呢?你应该这样做:用鼠标在左边的动作工具箱选取语句,双击或者拖动到右边的脚本窗口中,然后在上边的参数框里填写需要的参数值;需要删除某语句时,先在右边的脚本窗口里选中语句(这时可以看到语句被蓝色高亮条加亮),用Delete键或者用左上方的按钮就可以完成删除操作;另外,可以使用鼠标拖动语句完成插入、排序等操作,也可以使用和调整语句的顺序。综合运用这些基本操作就可以编写出整个Action脚本。5.3.2 专家模式(Export)另一种动作编辑模式是专家模式(Export)。这种专家模式能让你完全自由地手动输入程序代码,在这种模式下修改你的指令就如同在使用文字编辑器一样容易。当然,你必须对动作指令非常熟悉,才能在这种模式下进行编辑。图5-7是折叠了动作工具箱的专家模式(Export)图示。图5-7 专家模式编辑窗口读者可能注意到了在专家模式面板上似乎增加了几个编辑工具,如图5-8所示对增加的这几个工具按钮进行了注解说明。图5-8 专家模式面板上的编辑工具按钮既然使用专家模式进行编程,你就是专家啦。在专家模式面板里,没有了相关参数的面板,也没有指令的说明。自然,专家也会犯错误,专家在编写程序时出错了怎么办?不要紧,你在专家模式下进行编程时,不必害怕写错程序,因为这种模式下还有一个检查语法错误与否的按钮。无论何时把按下去,Flash 8都会在输出(Output)窗口中告诉你在哪里错了。此外,Flash 8还有一个规定:如果在专家模式下编写的程序有错,系统不能从专家模式面板切换到一般模式面板。别忘了自动格式化按钮这个按钮能够让你编写的程序代码排列的整整齐齐,变得井井有条。此外,显示参考资料的按钮可以帮助专家跳到参考(Reference)面板,并显示指针所在那一行指令的详细说明。你如果要从其他程序中复制一段程序到正在操作的文件中来,一定要在专家模式下进行,在这种模式下复制粘贴才有效。5.3.3 自定义动作显示文本在Action面板中,显示的动作指令文本可以由用户自己定义,其操作步骤是:执行菜单命令“编辑”“参数选择”打开“参数选择”对话框,展开“动作脚本编辑”标签,如图5-9所示。图5-9 “动作脚本编辑”标签l 系统默认字号:12l 系统默认脚本文本颜色(前景色):黑色l 系统默认脚本背景色:白色l 系统默认关键字颜色:蓝色l 系统默认批注(备注)颜色:粉红色l 系统默认属性(标识符)颜色:绿色l 系统默认字符串颜色:暗灰色l 还原默认设置:将所有设置还原为系统默认值。脚本文本的这些参数,都是可调的。建议用户一般不要去修改脚本文本的这些参数,因为系统默认的参数可以很容易看清脚本的各个组成部分,便于调试。5.4 程序流程的控制与其他编程语言一样,ActionScript语言也有控制语句。例如条件控制语句if、else if和循环控制语句如while、dowhile等。现在我们对常见的程序流程进行研讨。5.4.1 程序流程控制概述程序流程控制主要通过顺序执行、条件选择和循环结构组成。编程者可以在Action面板中采用普通模式和专家模式书写代码,也可以将两种模式互换(要保证程序的语法不错)。在Flash 8中,系统设置了有“彩色代码”功能,这些彩色代码能够帮助编程者很容易识别语法中的各个成分。这些彩色代码的一般含义是:l 红色:语法错误。l 深蓝色:关键字、内置函数语句。l 蓝色:字符串l 灰色:注释语句。5.4.2 顺序执行流程控制顺序执行是按照程序行的书写方式逐行向下执行。duplicateMovieClip(_root.ball, ball add i, i);setProperty(_root.ball add i, _x, 10+i*30);setProperty(_root.ball add i, _y, 10+i*30);例如,程序顺序执行上面的语句,在第1行指令中复制影片实例,在第2行和第3行设置复制后影片实例的属性。5.4.3 条件选择流程控制条件选择语句用来判断所给定的条件是否满足,根据判断结果真(True)与假(False),决定执行一种选择。一般说来,判断条件是以关系表达式或逻辑表达式的形式出现。条件选择根据选择结构,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州省临床检验中心第十三届贵州人才博览会引才2人模拟试卷及1套完整答案详解
- 2025年枣庄市口腔医院公开招聘备案制工作人员(6人)模拟试卷及答案详解(考点梳理)
- 2025内蒙古第七批高层次人才需求目录(2025年4月29日发布)考前自测高频考点模拟试题及1套完整答案详解
- 公司与个人借款合同范本【标准】5篇
- 2025年上半年山东铁投集团校园招聘、社会公开招聘165人考前自测高频考点模拟试题参考答案详解
- 2025北京市大兴区瀛海第六幼儿园招聘模拟试卷(含答案详解)
- 2025广西石卡镇储备村(社区)“两委”后备人才152人考前自测高频考点模拟试题参考答案详解
- 2025年河北石家庄海关技术中心公开招聘劳务派遣类工作人员2名考前自测高频考点模拟试题完整答案详解
- 2025年贵溪市公安局第一批招聘警务辅助人员20人模拟试卷附答案详解(典型题)
- 2025南平国网顺昌县供电公司车辆驾驶服务项目驾驶员招聘考前自测高频考点模拟试题及一套答案详解
- 2025广西南宁上林县公安局面向社会招聘警务辅助人员50人笔试备考试题及答案解析
- 火锅店引流截流回流方案
- 2025年档案员考试试题及答案
- 2025-2026学年七年级英语上学期第一次月考 (福建专用) 2025-2026学年七年级英语上学期第一次月考 (福建专用)原卷
- 国自然培训课件
- 2025安徽普通专升本《大学语文》统考试题及答案
- 2024网络主播新职业发展报告-快手
- 2025年4月自考03450公共部门人力资源管理试题
- 辽宁省沈阳市第一二六中学教育集团2024-2025学年八年级上学期10月月考地理试题
- 2025届威海市重点中学高三下学期一模考试物理试题含解析
- 河北省定州市多校2024-2025学年七年级上学期第一次月考地理试题
评论
0/150
提交评论