Flash AS入门教程.doc_第1页
Flash AS入门教程.doc_第2页
Flash AS入门教程.doc_第3页
Flash AS入门教程.doc_第4页
Flash AS入门教程.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Flash新手入门教程:AS入门第一课_认识编程环境不要被这个题目吓倒.AS的确是一种程序语言,我们编写AS代码就叫做编程.我们学习AS首先应该克服对编程的恐惧,所以在开始学习前,我们先廷着胸大声地说:编程其实很容易.ActionScript是针对Flash Player的编程语言,它在flash内容和应用程序中实现了交互性、数据管理以及其它许多功能.那么我们将程序写在什么地方呢?在flash创作环境中,我们的程序写在动作面板中而动作面板,又是与舞台上可以添加动作的对象相关联的.在ActionScript2.0中可以添加动作的对象有三种:关键帧、影片剪辑元件、按钮元件. 编程实际就是向计算机下达指令,让计算机按我们的指令去完成一些任务.这就要求我们用计算机能看得懂的语言,这就是编程语言.ActionScript则是其中的一种.即然是语言,就同我们人类的语言一样它就有它自己的语法、语句、词汇等,这些东西就是我们要学习的内容.为了以后学习方便我们首先来学习一个语句:trace()这个语句的作用是,flash在运行时,将括号中的内容显示出来.上面我们提到,ActionScript2.0中可以添加动作的对象有三种:关键帧、影片剪辑元件、按钮元件.也就是说,我们可以在这三个对象的动作面板中编写程序.具体怎样作呢?我们来试试.新建一flash文档,如果你的flash版本是CS3,那么请选择ActionScript2.0文档,因为本教程介绍的是ActionScript2.0.为什么不介绍3.0?因为sanbos发现很多人用的都是flash8.好,现在点击插入菜单,一新建元件,建一个影片剪辑元件,随便画一个什么图形吧,将元件拖到舞台上;然后点击窗口一公用库一按钮,然后随便选一个按钮拖到舞台上.这样,关健帧、影片剪辑、按钮都齐了.现在我们来看看怎样打开动作面板.在影片剪辑上点鼠标右键,然后在弹出菜单中点动作,那么现在我们看到的就是动作面板了.图1:动作面板我们在按钮元件上执行相同的操作,可以得到相同的结果现在在时间轴的第1 帧上,执行相同的操作,一样地打开了动作面板.动作面板的右边留出了一大片空白,等着你去编写程序,鼠标指针在那儿闪着,便勾起了我们编程的冲动.于是你说:我要编程了.上面我们不是介绍了一句,trace()吗?我们何不偷偷地在这里输上一句,也好过把编程的隐.于是你在这里输上:trace(我会编程了);注意大小写,括号后面跟着分号.测试影片.你会看到一个输出窗口,里面有我会编程了几个字是的,你已经会编程了.虽然只有一句,但它是一个ActionScript程序却是千真万确的.因此,这的确是一件值得祝贺的事情.来吧,让我们再说一次:编程其实很容易.欣赏够以后,请关闭输出窗口,关闭播放窗口,回到几分钟之前,令我们自豪了一把的动作面板,我们来对它进行更进一步的认识.我们看到trace是蓝色的是的,ActionScript内部的词汇在编程环境中都会以蓝色表示.那么这就是一个技巧, 当你在输入程序时,如果输入ActionScript内部词汇时不是蓝色的,那么说明你输错了,那么你应该马上检查,是否有哪个字母输错了.现在问题出现了,你说我记不到那些词汇.在中学时英语考不出好成绩主要就是因为记不住单词.现在学习编程也记不住那些指令、语句,所以觉得编程好难.首先我还是说一句,你可能不太乐意听的话:多练自然就记住了.你说:我就是记不住,我是不是就不宜学习ActionScript编程呢?NO,你看说英语并不难,我张口就来.我们将标淮降低,只要你看到这些指令,能够认识它就行.相比之下,知道有些什么指令比记住那些指令的拼写要重要得多.回到动作面板,你就会明白这个道理.看看动作面板的左半部分,这里几乎将所有的指令列了出来,你可以分门别类地去找到相关指令,如影片剪辑控制、时间轴控制、常用语句等,找到相应语句,双击它,于是它便自动写到右边的编程窗口中了.是不是不用精确记住指令的拼写也能编程呢.在右边的编程窗口上面的工具栏最左边有一个加号,它具有与左边窗口相同的功能,不信你点它试试通常在ActionScript编程时,我们可能会习惯将代码写在影片剪辑、按钮元件上,这就必须要事件驱动,它的格式是: on(事件名称) 要执行的语句 现在我们来试一试,在动作面板中输入 on( 这时你会发现弹出了一个窗口,将所有事件列了出来,你只需用鼠标选用所需要的事件双击它或回车,事件就会自动写到屏幕上.是不是很方便?很多ActionScript程序都是对影片剪辑、按钮元件、文本框等对象进行操作,这需要在属性面板中为它们命名.良好的命名习惯,对我们编写程序会有很大的帮助.按照约定,影片剪辑元件的命名以_mc结尾,如my_mc,按钮元件则是以_btn结尾,文本框则是以_txt结尾.当然你完全可以不理采这些约定,随心所欲地为他们命名.我们说遵守这些约定,会对我们编程有所帮助.还是来试一试吧.建一影片剪辑元件,然后将它拖到舞台上,打开属性面板,为它取名为:mymc_mc,在第一帧打开动作面板,输入:mymc_mc.这时会弹出一个窗口,需要哪个指令选就是了.这些指令是按拼音顺序排列的.如果你能记住所需指令的前几个字母,你不妨直接输入,这时你会发现,很快就定位到了你所需要的指令.现在,我们把元件的名称改为mymc,不以_mc结尾,再到动作面板中输入,mymc.结果什么也没有发生,后面的指令只有自己输了,或者到左边窗口中去选.按钮元件和文本框也是相同的.你可以试一下.这一课我们认识了动作窗口,这是我们ActionScript编程的地方,通过对智能化的编窗口的认识,应该消除了我们对编程的恐惧,让我们树立了学好ActionScript编程的信心Flash新手入门教程:AS入门第二课_面向对象编程基础面向对象编程基础 ActionScript是一种面向对象的编程语言.通常我们会认为编程就是连续地写一系列指令,计算机按顺序地执行它.而面向对象编程则是将程序分成各个块,分散到对象上.什么是对象?对象就是我们在flash中能看到的一切东西.舞台是一个对象,时间轴、影片剪辑、按钮、文本、位图都是对象.在第一课中我们己说过:在ActionScript2.0中我们可以将程序写在关键帧、影片剪辑、按钮元件上.即便是将程序完全写在关键帧上,它也必须要对象的事件驱动才能执行.在理解了面向对象编程后,我们必需要对一些概念有所了解.事实上我们在上面对对象己经有了一定的了解.就如同我们的家中,所有的东西都可以叫做对象.比如,电视机,电冰箱,书桌,衣柜等等.很容易发现,这些东西,总有那么几个都有相似之处.比如,电视机、电冰箱都需要用电;书桌、衣柜都是用木头做成的. 我们便把家里的东西分成了几类,并为每一类东西取上一个名字,比如,电器类、木器类等.这样我们就理解了另一个重要的概念一类.类是某一类型对象的概括或者说是模板,在ActionScript中,所有对象都是由类定义的.每个类都包括了三个重要的元素:事件、属性、方法,这是我们必须要了解的三个重要概念.事件:在面向对象的编程中,并不是将程序按顺序交给计算机去执行,上面己经谈到了,程序被分散到了对象上.那么要计算机执行这些程序就需要事件来触发.通俗地讲就是:当某件事情发生时就去做一些事情.这个某件发生的事情就是事件.在flash中,常常会放上一个按钮,比如开始按钮.程序设计者可能是这样的思路:当按钮按下时就播放动画.那么当按钮按下时就是按钮对象的事件.在ActionScript2.O中,程序可以写在关键帧和元件上,事件在关健帧中和原件中的输写方法是不一样的. 事件在关健帧中的写法: 元件名称.事件名称 = function() 要执行的语句 . 事件在元件上的写法: on(事件名称) 要执行的语句 . 我们来做一个练习,在舞台上有一名为play_btn的按钮,现在要实现点击按钮动画就播放.新建flash文档,用椭园工具画一个园,然后,在40帧插入关健帧,将园移到另一位置,建立补间动画.新建一图层,从内部库中拖一个按钮到舞台上.打开属性面板,为按钮命名为play_btn.这里先介绍一个最常用的事件:release,这是当放开鼠标按键时触发实际也就是完成了一个点击动作时发生首先,在幀动作面板上写程序的方式完成练习:新建图层,命名为action,当这不是必须的,你完全可以给它取个其它名字 打开幀动作面板,输入: stop(); /这是让动画停止播放,以便让我们点击按钮时才播放 play_btn.onRelease = function() play(); /让动画开始播放 测试影片,当点击按钮后,园形开始移动 回到场景中,可以看到,在action图层时间轴的第幀上,有一个a字,这说明在这一幀上有程序 下面用在元件上写程序的方式来完成练习: 将幀动作除第一行的stop();外其它的程序全部删除然后,在按钮元件上点右键,点击动作,打开动作面板,输入如下代码: On(replease) Play(); 测试影片,得到相同的效果注意:在幀动作面板中同元件动作面板中事件的名称不一样,如上例,在幀动作中是:onRelease,而在元件上则是:release属性:对象的属性可以理解为对象的特性,比如,大小,位置,颜色等属性的输写规则是:对象名称属性名称值;下面介绍几个最常用的属性:_x,_y:分别是对象在舞上台的x,y坐标,这两个属性可以确定对象在舞台上的位置_xscale,_yscale:分别是对象在舞台上沿x,y轴方向的缩放比例,实际上就是宽和高的缩放比例,以百分比表示,例如: my_mc._xscale = 50;这表示,元件my_mc的宽度缩小到原来的 _alpha:这是对象的透明度,取值为-100. _rotation:这是对象的旋转度,以角度为单位 _visible:为是对象是否可见,可设置两个值,true(或)和false(或0).比如要设置元件my_mc在舞台上不可见,可用: my_mc._visible = false; 或my_mc._visible = 0; 相反要设置它在舞台上可见则用: my_mc._visible = true; 或my_mc._visible = 1;Flash新手入门教程:AS入门第三课_AS基本语法在第一课中我们己经介绍过,ActionScript是一部语言,即然是语言它就有它自己的语法一、ActionScript语句是区分大小写的:在ActionScript中英语字母的大小写具有不同的意义的.我们来看一个例子:打开时间轴第一帧的动作面板,输入: Name=Sanbos; name=假博士; trace(Name); 测试影片,输出窗口将出现Sanbos,ActionScript区分开了Name和name.现在将代码改为: Name=Sanbos; Name=假博士; trace(name); 测试影片,输出窗口将出现:undefined,没有输出内容二、ActionScript语句以分号作为每句的结束符号,以上面的代码为例,把它写成一行:Name=Sanbos;name=假博士; trace(Name); 这时ActionScript将这一行看成三句指令,每句中间用分号分开.测试影片,输出窗口将出现Sanbos.那么将三句指令中间的分号去掉,那么,输出窗口会出现语法错误的提示.所以我们应该养成,每一个语句结束时,输入一个分号的习惯三、关于点语法在ActionScript中,应使用点(.)来访问对象的属性和方法.比如在舞台上有一个叫mymc_mc的影片剪辑元件,我们要访问它的属性和方法,就需要使用点,比如: mymc_mc._x 在对象的名称后面输入一个.,然后输入其属性和方法的名称. 点的另一个作用是相当于路径,就相当于文件系统如:c:/windows/中的/.比如我们一个动画,主时间轴或者说舞台,在ActionScript2.O中被写为_root,舞台上有一影片剪辑元件my_mc,如果要写my_mc的_x属性,就应该这样写: _root.my_mc._x 你可能会说,我常看到只写了my_mc._x,没有_root.这种情况在主时间轴的帧动作上的,程序本来就在_root上,就可以省略.如果在舞台上加一个按钮用来设置舞台上mc的_x属性,用_root.对象的层次更清楚一些。如果代码是写在mc内部,就要加上_root或_parent了。如在按钮上就要这样写: on(release) _root.my_mc._x=200; 又比如,做一个mc动画,在mc的第一帧写上stop();放在舞台上,然后在舞台上放一按钮来控制mc播放,那么在按钮上的程序就应该这样写: on(release) _root.my_mc.play(); 四.注释ActionScript中注释用来解释和说明语句的作用.而注释本身是不被执行的.注释有两种,一种是单行注释,一种是多行注释.单行注释是以/开始到本行未尾.如: trace(单行注释);/这是单行注释丨 测试影片时从双斜杠开始以后的都不会执行. 另一种注释方式是多行注释,它是以/*开头,以*/结束的.如: /*这是多行注释 在这个注释范围内的语句 都不会被执行*/ trace(多行注释); 数据类型:计算机执行程序时处理的数据,与我们数学中的数字是不同的.数字只是数据的一种,在ActionScript中有很多种不同类型的数据,下面介绍一下几种主要的数据类型. Number:数字数据类型 uint:正整数 int:整数 String:字符或者叫文本,String数据类型常常用引号括起来,如: Mystring=abc Boolean:布尔值,它只有两个值:true、false,分别是真和假的意思.也就是是和不是的意思O*ect:可以里解为对象数据类型的转换:虽然数据有不同的类型,但各种类型之间是可以转换的.就象现在流行的变性手术一样,做了一二十年的男人,突然想做女人了,做个变性手术就行了.在ActionScript中就简单多了,下面来看看怎样转换将数据转换为数值类型: 数值类型有三种,用下面三个函数可以将真它数据类型转换为数值: Number() int() uint() 对于不能被转换为数值的数据如英文字母,汉字等,int(),uint()则返回0,而Number()则返回NaN. 练习:在帧动作面板中输入: a=123; b=abc; c=int(a); d=int(b); e=Number(b); trace(c=+c+newline+d=+d+newline+e=+e); 测试影片,在输出窗口会出现: c= 123 d= 0 e=NaN 来看看这几句代码: a=123;这个123是用引号括起来的,那么它就是字符(String),它不是一个数值,而是由三个字符组成的字符串,它被读为:一二三. b=abc更不用说是字符串了. c=int(a);将a从字符串转换为数值了,那么c就为123,被读为:一百二十三. d=int(b);很显然abc是不能被转换为数值的,当不能被转换为数值时,int()返回0,所以d为0. e=Number(b);当不能被转换为数值时,Number()返回NaN,所以e为NaN. 如果要将布尔值转换为数值,那么ture将被转换成1,false则被转换为0. 如: a=ture; b=false; c=int(ture);/c为1 d=int(false);/d为0 另外int和uint类型都是整数,如果被转换的数据为小数点的,那么它们会只返回整数部分,如:a=3.5; b=int(a);/b为3 c=Number(a)/c为3.5这时我们立即就会想到可以用int(),uint()来取整,是的可以,不过需要注意的是它们是将小数点及后面的省略,而不是四舍五入将数据转换为字符串:用String()可以将数据转换为字符串.如: a=5; b =8; c =String(b);/c为8 d=a+c; trace(d); 测试影片输出为58(读作:五八),这是因为c是字符,不能进行数学计算,只能是两个字符连接.如果将d=a+c;改为:d=a+b;测试时就输出13.将数据转换为布尔值: 只介绍一种情况,将数值转换为布尔值.如果数值为0,则被转换为false,否则转换为true.仅管有Boolean()函数来转换,但我们应该不会用它,但这并不意味着我们不会用到这种转换,来看个例子: My_mc._visible=0; 这句让元件不可见的代码,我们经常用到,mc的_visible属性是是否可见的意思.设置这个属性只能用布尔值,即true(是)和false(不是).但上一句我们确用的0,那么在执行这句代码时,ActionScript会将0转换为false,然再执行.所以上句代码实际执行的是: my_mc._visiblc=false; 这里可以看出,如果我们直接写成: my_mc._visiblc=false; 计算机执行速度要快些,因为它不需要转换,当然你说,我写0要快些,那就随你高兴罗. 数据被存放在计算机内存之中,内存被分成很多个小房间,每个房间里存放一个或多个数据,为了便于使用这些数据,我们给这些房间取上一个名字,这就是我们要介绍的另一个重要概念:变量:变量用来存放数据,它是一小块内存的代号,如上所说,它就是内存中存放数据的小房间的名称,要创建一个变量,它的语法是: var 变量名称:数据类型 比如: var a:Number 这就声明了一个变量a,它的数据类型是数值.运行下面的代码: var a:Number; a= 10; trace(a); 输出面板将显示10. var a:Number; a= b; trace(a); 输出面板将显示:undefined,这是不知道的类型.因为声明的变量a是数值类型,而给它赋值却是b,b不是数值,所以输出结果就只好说:不知道你在说什么? 上面a=10中的=号是赋值,即将10放到变量a中.在声明变量的同时就可以给它赋值,如: var a:Number=10; 你可能要说,前面你怎么就写的: a=10; 是的,在ActionScript2.0中我们还可以直接写:a=10,它实际上就是:var a=10,但这是最后的晚餐了,在ActionScript3.0中就必须写var了. 上面介绍过,变量就象是内存中的一个房间,里面存放着数据.那个这个房间就是一人一间制.比如原来a房间中住着10,现在将15放进去,15进去后,一脚就将10踢出去了.运行下面代码看看: var a:Number; a=10; a=15; trace(a);结果显示为:15Flash AS入门教程第四课:AS常用语句第一节-运算符一.运算符1. = 赋值运算符,它不是数学中的等于,而是将=号右边的值赋给左边的变量. 2. 使用于字符串的运算符: 比较:= 等于. 用于比较两个字符串是否相等,如果相等则返回true,否则返回false. 如: a=abc; b=abc; c=bcd; d=(a=b);/d为true f=(a=c);/f为false大于 .= 大于等于 小于 = 小于等于 字符串的大小比较由小到大的顺序是:A一Z一a一z.+:连接运算:如:a=abc; b=def; c=a+b;/c为:abcdef trace(c); 可以把上述代码复制到帧动作面板中,测试影片,试试. 又如:a=123; b=456; c=a+b;/c为:123456 trace(c); 而:a=123; b=456; c=a+b;/c为:579 trace(c); 上面两个代码出现了不同的结果,这是因为第一段代码a被赋的值是被引号括起来的,那么它就是字符串,在字符串中+号是连接符号,不是数学中的加号.第二段代码,a、b被赋的值都没引号,AS就将它看着数字,在数字类型中+号就是数学中的加号. += 这也是连接符号,这是将+=符号左边的字符串与右边的字符串连接,如: a=abc; b=def; a+=b;/这时a为abcdef3.对数字使用运算符: +、-、*、/:这就是数学中的加减乘除. %:求模运算符,即求余数,如: a=7; b=2; c=a%b;/c为a除以b的余数1 +=、-=:分别是符号左边的数字加上或减去右边的数字,并将结果赋值给左边的变量.如: a=7; b=2; a+=b;/这时a为9 a-=b;/这时a为7 *=、/=:同理 +、-:递增递减运算符,即+或减1.如: a=7; a+;/这时a为8 a-;/这时a为7 比效:=:等于 !=:不等于 :大于 =:大于等于 :小于 =:小于等于Flash AS入门教程第四课:AS常用语句第二节-条件语句二、条件语句if 语句:如果怎么样,就做些什么事.可以把if理解为如果. 格式: if(条件表达式) 要执行的语句 例: a=7; b=2; if (a=b) trace(是的); 这个条件语句的意思是,如果a等于b,那么就输出是的.将上面代码写到帧动作面板中,测试影片,发现并没有输出面板弹出.因为上面的语句是a等于b时才执行 trace(是的);,事实上现在a不等于b而是大于b,那么trace(是的);就不会执行.把代码改一下: a=7; b=2; if (ab) trace(是的); 测试影片,那就会看到输出窗口中的是的.ifelse语句:这句是如果怎样就执行if后面的语句,如果不是这样就执行else后面的语句. 格式: if(条件表达式) 要执行的语句 else 要执行的语句 例: a=7; b=2; if(a=b) trace(a比b小或一样大); else trace(a比b大); 看看这个代码,如果a小于等于b那么就输出:a比b小或一样大.否则,就输出:a比b大.测试影片,我们可以看到:a比b大. ifelse if:这个语句可以测试多个条件.这样理解这个语句,如果怎样就干点什么,又如果怎样,又干点什么,再如果怎样. 还是这个例子: a =7; b=2; if(ab) trace(a比b小); else if(a=b) trace(a和b一样大); else if(ab) trace(a比b大); 这段代码意思是:如果a小于b那么输出:a比b小;如果a等于b那么输出:a和b一样大;如果a大于b那么输出:a比b大.测试影片,输出是:a比b大.switch语句:上面提到有要检测多个条件的情况,可以用多个else if,用switch语句也可以实现这个目的. 格式: switch(表达式) case 表达式的值: 要执行的语句 break; case 表达式的值: 要执行的语句 break; default: 要执行的语句 上面括号中的表达式也可以是一个变量,下面的大括号中可以有多个 case 表达式的值:,程序执行时会从第一个case开始检查,如果第一个case后的值是括号中表达式的值,那么就执行它后面的语句,如果不是括号中表达式的值,那么,程序就跳到第二个case检查,以此类推,直到找到与括号中表达式的值相等的case语句为止,并执行该case后面的语句.你可能会注意到每一句case后面都有一句breake;这是跳出switch语句的意思,即当找到相符的case,并执行相应的语句后,程序跳出switch语句,不再往下检测.以免发生落空的错误.可能会有这样的情况,所有的case语句后的值都与表达式的值不相符,那么就应该用default: 语句,这时程序就会执行default: 后的语句.如果你确定不会出现这种情况,那么可以不要default: 语句. 例1: a=7; b=2; c=a+b; switch(c) case 5: trace(小了); breake; case 12: trace(大了); breake; case 9: trace(对了); breake; 测试影片,输出句对了. 例2. a=7; b=2; switch(a+b) case 5: trace(小了); breake; case 12: trace(大了); breake; case 8: trace(还是小了); breake; default: trace(都没算对); 测试影片输出为:都没算对.逻辑运算符:逻辑运算符在运算符那一节没有介绍,是因为它多半用在条件语句中,所以我们在这一节介绍.在上面的条件表达式中,都是单一的条件,比如是否大于是否小于等,实际上我们经常都可能用到复合条件,比如大小多少并且小于多少,大于多少或者小于多少等.在这样的复合条件语句中,有两个词:并且、或者,它们的符号: & 并且 丨丨 或者 并且是指两个条件都成立时为真,或者是指只要有一个条件成立时为真. 例1: a=7; if(a5)&(aa) /如果猜的数大于随机数. c = 大了点; /动态文本框提示”大了点”. else if (s=a) /如果猜对了,根据猜的次数给出相应结果. if(cs=5) /如果猜的次数在5次以内 c = 哇,你只猜了 + cs + 次就猜对了,真历害!; /给出表扬,注意这里用到了,字符串的连接. else / 如果不只猜5次. c=猜对了!你猜了+cs+次; /提示猜对了,并给出猜的次数. else if (sa) /如果猜的数字小于随机数 c=小了点;/提示”小了点” 最后,来写重猜的代码: cc_btn.onRelease = function () /当点击重猜按钮时执行以下语句 a = random(101);/重新产生随机数 cs = 0;/将猜的次数设为0 s=;清空输入文本框 c=;清空提示文本 作业:制作猜数游戏Flash AS入门教程第四课:AS常用语句第三节-循环语句for循环:格式:for(初值;条件表达式;增值)要执行的语句这个语句,首先给一个变量设定一个初始值,然后将这个初始值带入条件表达式,如果条件表达式为真,则执行大括号中的语句,并且按括号中增值表达式对变量的值进行增减;然后再次带入条件表达式,如果为真则再次执行大括号中的语句.,这样直到条件表达式为假为止.例:var a=0;for(var i=0;i10;i+)a += i;trace(a);我们来看看最后输出的a是多少.程序开始时,a等于0,然后进入for循环,循环开始i等于0,条件表达式i10成立,那么执行a+=i,此时a、 i均为0,那么a为0,然后执行增值i+,则i为1,再检测条件表达式i10仍成立,执行a+=i,则a为1;执行i+,i为2,这样反复循环,直到i为10时,条件表达式i10不成立,停止循环.明显可以看出循环进行了10次,这时a是多少呢?测试影片时输出为45forin循环:这是遍历或者叫循环访问一个组对象中的成员.比如影片剪辑的子级、对象的属性、数组等.由于数组等在前面还没有介绍,因此我们将forin循环放到下一课介绍数组时再祥细介绍while循环:有点类似if语句,只要条件成立就执行相应语句.格式:while(条件表达式)要执行的语句计数语句当条件表达式为真时,执行大括号中的语句,执行计数语句,然后用计数语句的结果再次检测条件表达式,如此反复循环.直到条件表达式为假为止.这里需要注意的是,如果没有计数语句,或者计数语句的结果永远不能使条件表达式为假,那么循环将水远无休止地反复,这就形成了一个死循环,我们在编程的过程中一定要避免这种情况.例1:下面的代码是一个死循环,请不要测试.var a=0;while(a10)trace(a);看看这段代码,程序执行时a等于0,然后进入循环,条件表达式a10成立,执行trace(a),输出0,然后再检查条件表达式,因为没有计数语句,a没发生变化,条件表达式仍成立,于是又输出一个0,然后又反复,一直不停地输出0,无休无止,直到天荒地老.例2:下面的代码是一个死循环,请不要测试.var a=0;while(a10)trace(a);a-;这一例加上了计数语句a-,但a的初始值为0,每一个循环它减1,这样条件表达式a10也是永远为真,因此循环也是永不停息,直到地老天荒.例3:var a=0;while(a10)trace(a);a+;这一例将计数语句改为a+,这样每一循环,a加1,当10个循环后,a为10,条件表达式a10为假,循环停止.测试本例我们会在输出面板中看到:0129dowhile循环:这个循环实际和while循环是一样的,只是它先执行一次语句,然后再检测条件语句,而while循环是先检测条件语句再执行大括号内的语句.dowhile循环的格式为:do要执行的语句计数语句while(条件表达式);Flash新手入门教程:AS入门第五课_数组在前面介绍变量时,我们说将内存分成无数个房间,用来存放数据.每个房间中只能住一个数据,比如房间中原来住着5,后来8又住进这个房间,于是一脚将5踢了出去.现在可能有这种情况,就是8住进来后,不把5踢出去,两个合租.事实上这也是允许的,这种情况就被称为数组.在房间中的各个成员被称为元素, 这一些元素的数据类型不一定是相同的.也就是说在现在开放的年代,男女合租是允许的.比如在房间中又住进去a,它是字符与前面的5、8数字的数据类型就不相同.房间中每个元素都有一个编号,我们在引用这些元素时,只需用编号就行.就如在监狱中的囚犯一样,你叫道:3365出来.于是号数为3365的囚犯出来了.咋一不小心就将数组中的元素整进监狱了呢?需要注意的是,数组中的元素编号是从0开始的.比如上面我们建的数组,5是0号、8是1号、a是2号.创建数组:可以用下列格式创建数组格式一:var 数组名:Array=new Array(元素1,元素2,) 格式二: var 数组名:Array=new Array(); 数组名0=值; 数组名1=值; 例:我们上面建的数组,这样写 var myarray:Array=new Array(5,8,a); 或: var myarray:Array=new Array(); myarray0=5; myarray1=8; myarray2=a;数组元素的引用 创建数组后,就可以引用其元素了,格式为:数组名称元素编号; 比如要引用上述数组第一个元素的值就可以这样写: myarray0 可以测试一下下面这段代码: var myarray:Array=new Array(5,8,a); var b=myarray0; trace(b); 输出应该是5. 数组是对象,即是对象,那么就有它自已的属性和方法,下面我们就来认识一下:数组的属性:只介绍一个属性, length:这是指组数的元素的数量.如上面的数组,myarray一共有三个元素5,8,a,那么这个数组的length属性为3例1: var myarray:Array=new Array(5,8,a);b = myarray.length; trace(b); 输出结果为3.For.in循环:在上一课介绍循环语句时,说过for.in循环留到这一课来介绍.这个循环是遍历一个集合的所有对象的循环,比如遍历数组元素.就是说一个一个地方问每一个元素.数组中有几个元素它就循环几次例2: var myarray:Array=new Array(5,8,a); for (var i in myarray) b = myarray; trace(b); 输出结果为:a 8 5 例3:用for循环和length属性也可以实现遍历数组: var myarray:Array=new Array(5,8,a) for(var i=0;imyarray.length;i+) b = myarray; trace(b); 输出结果为:5,8,a 可以看出,这两个循环都是将数组中的循环方问了一遍,只是结果的顺序不同.例2中应用了数组的length属性,这个属性最常用的就是用在for循环中,在以后的课程中会经常用到.数组的方法:concat( ):将参数中指定的元素与数组中的元素连接,并创建新的数组。如果 value 参数指定的是数组,则连接该数组的元素而不是数组本身。 例4: var myarray:Array=new Array(5,8,a) myarray1 = myarray.concat(b); for(var i in myarray1) c = myarray1; trace(c); 输出为:b a 8 5 用myarray1 = myarray.concat(b);将b连接到myarray数组中并创建新数组myarray1. 例5: var myarray:Array=new Array(5,8,a) myarray1 = myarray.concat(b); myarray2 = myarray.concat(myarray1); for(var i in myarray2) c = myarray1; trace(c); 这时myarray2应该是:myarray25,8,a,5,8,a,b,这是用concat()方法将两个数组连接起来了. join( ): 将数组中的元素转换为字符串、在元素间插入括号中指定的分隔符、连接这些元素然后返回结果字符串。如果括号中没有指定分隔符,那么分隔符将用逗号. 例6: var myarray:Array=new Array(5,8,a); c = myarray.join(“-“); trace(c); 输出为:5-8-a 例7:在括号中不设分隔符则将用逗号作分隔符 var myarray:Array=new Array(5,8,a); c = myarray.join( ); trace(c); 输出为:5,8,a pop():删除数组中最后一个元素,并返回该元素的值。 例7: var myarray:Array=new Array(5,8,a); var c = myarray.pop(); trace(“被删的是:” + c); trace(“被删后的数组:” + myarray); 输出结果是: 被删的是:a 被删后的数组:5,8 push():将一个或多个元素添加到数组的结尾,并返回该数组的新长度。 例8: var myarray:Array=new Array(5,8,a); var c = myarray.push(“b”,”c”); trace(“添加元素后数组的长度是:”+c); trace(“添加元素后的数组:”+myarray); 输出结果是: 添加元素后数组的长度是:5 添加元素后的数组:5,8,a,b,c reverse():就地倒转数组。 例9: var myarray:Array=new Array(5,8,a); trace(原数组是:+myarray); myarray.reverse(); trace(被倒转后的数组是:+myarray); 输出结果是: 原数组是:5,8,a 被倒转后的数组是:a,8,5shift():删除数组中第一个元素,并返回该元素。参见pop()方法slice(startIndex, endIndex):返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。返回的数组包括 startIndex 元素以及从其开始到 endIndex 元素(但不包括该元素)的所有元素。例10: var myarray:Array=new Array(1,2,3,4,5); var myarra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论