Flash脚本、按钮、文本框(2)_第1页
Flash脚本、按钮、文本框(2)_第2页
Flash脚本、按钮、文本框(2)_第3页
Flash脚本、按钮、文本框(2)_第4页
Flash脚本、按钮、文本框(2)_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

1、 Flash脚本、按钮、文本框(2) 2013.4ActionScript(AS)的特性的特性n1.注释n/计算 x 阶乘的函数nfunction f(x) nif (xb) ntxtresult.text = a;n else ntxtresult.text = b;nn3.多分支结构nelse if太多时,计算机的执行速度较慢(在其它程序语言中也是一大问题)。n这时读者可以使用另1种多分支结构:switch(转换) 4.Switch(略)(略) nswitch在Visual Basic里面是个很好用的命令。n它可以通过判断不同的条件表达式来执行不同操作。循环结构n循环结构是可以循环执行某些

2、语句的结构,这种结构能够在一定程度上减少程序的复杂性。这种结构由循环条件和循环体组成。n但存在一个上述结构都没有的安全隐患,那就是死循环。一旦循环条件设置不当,程序极有可能陷入死循环状态,这是非常危险的,死循环有可能耗尽系统的资源,最终导致死机。n为了避免死循环的出现,在编写程序前一定要谨记下面的原则,那就是循环体每执行一次,一定要有使得循环条件往“假”的方向发展的趋势。下面,介绍几种常用的循环结构: 1.循环语句for n对于for循环,它依赖一个循环变量,它的语法结构如下: nFor(初始循环变量;循环变量条件;循环变量变化趋势) n n/只要循环变量满足条件n n上述结构中,AS的执行顺

3、序是这样的:n首先给循环变量赋初值n然后判断循环变量条件,如果条件成立,执行,如果不成立,退出循环。n循环体的语句n执行循环变量的变化趋势(增加或者减少实例:求1到100的自然数之和nvar sum = 0; n/下面是 for 循环nfor (var i=1; i=100; i+) n nsum = sum + i; n ntrace (sum=+sum); n输出:sum=50502.while 和 do.while n该循环的语法结构如下: nwhile(逻辑条件) n n/满足逻辑条件要执行的程序n nwhile循环在运行时遵循下面的步骤: n(1)检查 while 后面括号内的条件是

4、否成立。如果条件成立, 执行(2);否则结束循环, 运行循环体后面的语句。n(2)执行满足条件的语句,再回到(1)nn = 0; n/下面是 while 循环nwhile(n 5) nn+; n ntrace(n=+n); n上面的例子运行结果为 n=5。当n小于5时循环的条件成立,于是运行其中的n+ (即n增加1)。当n等于5时,因为循环条件已经不成立,所以中止循环,执行后面的trace 语句。数组n在前面介绍变量时将内存分成无数个房间,用来存放数据。每个房间中只能住一个数据,比如房间中原来住着5,后来8又住进这个房间,于是将5踢了出去。n现在可能有这种情况,就是8住进来后,不把5踢出去,两

5、个合租。事实上这也是允许的。这种情况就被称为数组。n在房间中的各个成员被称为元素,这一些元素的数据类型不一定是相同的。比如在房间中又住进去a,它是字符型数据与前面的5、8数字的数据类型就不相同。n房间中每个元素都有一个编号,在引用这些元素时,只需用编号就行。需要注意的是,数组中的元素编号是从0开始的。比如上面建的数组:5是0号、8是1号、a是2号。创建数组 n可以用下列格式创建数组: n格式一: nvar 数组名:Array=new Array(元素1,元素2,) n格式二: nvar 数组名:Array=new Array(); n数组名0=值; n数组名1=值; n进行下面的定义: nva

6、r myarray:Array=new Array(5,8,a); n或: nvar myarray:Array=new Array(); nmyarray0=5; nmyarray1=8; nmyarray2=a; 2.数组元素的引用n创建数组后,就可以引用其元素了,格式为: n数组名称元素编号; n比如要引用上述数组第一个元素的值就可以这样写: nmyarray0 测试代码: nvar myarray:Array=new Array(5,8,a); nvar b=myarray0; ntrace(b); n输出应该是:n5 3. 数组的属性n数组是对象,即是对象,那么就有它自已的属性和方法

7、,下面就来认识一下: n属性Length:组数的元素的数量。n如上面的数组myarray一共有三个元素5,8,a,那么这个数组的length属性为3 例:nvar myarray:Array=new Array(5,8,a); nb = myarray.length; ntrace(b); n输出结果为:n3 4For.in循环n这个循环是遍历一个集合的所有对象的循环,比如遍历数组元素。数组中有几个元素它就循环几次。nvar myarray:Array=new Array(5,8,a); nfor (var i in myarray) nb = myarray; ntrace(b); n n输

8、出结果为:5,8,an用for循环和length属性也可以实现遍历数组:nvar myarray:Array=new Array(5,8,a) nfor(var i=0;imyarray.length;i+) nb = myarray; ntrace(b); n n输出结果为:5,8,a 5.数组的方法: n(1)方法concat( ) n将参数中指定的元素与数组中的元素连接,并创建新的数组。如果value 参数指定的是数组,则连接该数组的元素而不是数组本身。例:nvar myarray:Array=new Array(5,8,a) nmyarray1 = myarray.concat(b);

9、 nfor(var i in myarray1) nc = myarray1; ntrace(c); n n输出为:5,8,a,bn用myarray1 = myarray.concat(b);将b连接到myarray数组中并创建新数组myarray1。例:nvar myarray:Array=new Array(5,8,a) nmyarray1 = myarray.concat(b); nmyarray2 = myarray.concat(myarray1); nfor(var i in myarray2) nc = myarray2; ntrace(c); n n这时myarray2应该是:

10、myarray25,8,a,5,8,a,b,这是用concat()方法将两个数组连接起来了。(2)方法join( ) n将数组中的元素转换为字符串,在元素间插入括号中指定的分隔符、连接这些元素然后返回结果字符串。如果括号中没有指定分隔符,那么分隔符将用逗号。nvar myarray:Array=new Array(5,8,a); nc = myarray.join(-); ntrace(c); n输出为: 5-8-a例:n在括号中不设分隔符则将用逗号作分隔符nvar myarray:Array=new Array(5,8,a); nc = myarray.join( ); ntrace(c);

11、 n输出为:5,8,a (3)方法pop() n删除数组中最后一个元素,并返回该元素的值。nvar myarray:Array=new Array(5,8,a);nvar c = myarray.pop();ntrace(被删的是: + c);ntrace(被删后的数组: + myarray);n输出结果是:被删的是:a 被删后的数组:5,8 (4)push() n将一个或多个元素添加到数组的结尾,并返回该数组的新长度。nvar myarray:Array = new Array(5, 8, a);nvar c = myarray.push(b, c);ntrace(添加元素后数组的长度是:+

12、c);ntrace(添加元素后的数组:+myarray);n输出结果是: 添加元素后数组的长度是:5 添加元素后的数组:5,8,a,b,c (5)reverse() n将整个数组倒转。nvar myarray:Array=new Array(5,8,a); ntrace(原数组是:+myarray); nmyarray.reverse(); ntrace(被倒转后的数组是:+myarray); n输出结果是:原数组是:5,8,a 被倒转后的数组是:a,8,5 n(6)shift() n删除数组中第一个元素,并返回该元素。参见pop()方法。(7)slice(startIndex, endInd

13、ex) n返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。返回的数组包括startIndex元素以及从其开始到endIndex元素(但不包括该元素)的所有元素。n例:var myarray:Array=new Array(1,2,3,4,5); nvar myarray1:Array = myarray.slice(0,3); ntrace(myarray1); n输出结果是:1,2,3 (8)sort() n对数组中的元素进行排序。Flash根据Unicode值排序。(ASCII是Unicode的一个子集。)默认情况下,Array. sort() 按下面的列表中的说明进行排序:

14、 n排序区分大小写(Z 优先于 a)。n按升序排序(a优先于 b)。n修改该数组以反映排序顺序;在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。n数值字段按字符串方式进行排序,因此100优先于99,因为“1”的字符串值比“9”的低。例nvar myarray:Array=new Array(3,4,1,2,5); nmyarray.sort(); ntrace(myarray); n输出为: n1,2,3,4,5 n对数组进行了重新排序。(9)splice(startIndex, deleteCount, value): n给数组添加元素以及从数组中删除元素。此方法会修改数

15、组但不制作副本。n参数startIndex:一个整数,它指定插入或删除动作开始处的数组中元素的索引。可以指定一个负整数来指定相对于数组结尾的位置(例如,-1是数组的最后一个元素)。ndeleteCount:可选一个整数,它指定要删除的元素数量。该数量包括startIndex参数中指定的元素。如果没有为 deleteCount参数指定值,则该方法将删除从startIndex元素到数组中最后一个元素之间的所有值。如果该参数的值为0,则不删除任何元素。nvalue: 可选指定要在 startIndex参数中指定的插入点处插入到数组中的值。n例:var myarray:Array=new Array(

16、1,2,3,4,5); nmyarray.splice(1); ntrace(myarray); n输出结果为: n1 n本例在splice()方法中只用了一个参数1,这是指在插入或删除的位置,数组编号从0开始,那么1的位置是第2个元素。第二参数未设置则将删除从第2个元素开始的所有元素。第三个参数未设置则不插入新元素。所以执行后数组中就只剩下第0号元素了。例nvar myarray:Array=new Array(1,2,3,4,5); nmyarray.splice(1,2); ntrace(myarray); n输出结果是: n1,4,5 n本例用了两个参数,第2个参数是2,就是说将删除2

17、个元素。例nvar myarray:Array=new Array(1,2,3,4,5); nmyarray.splice(5,0,6); ntrace(myarray); n输出结果是: n1,2,3,4,5,6 n本例用了三个参数,第一个参数为5,则是在数组的第6个位置上执行操作,第二个参数是是0,是不删除任何元素。第三个参数是6,是插入一个新元素6。n(10)unshift():将一个或多个元素添加到数组的开头,并返回该数组的新长度参见push()方法。对象n对象就是一些具体的东西,比如舞台上的元件,图形,文本框等等,都把它叫做对象。又比如家里的各种物件都可以叫一个对象,电视、桌椅都可以

18、叫做对象。然后把这些对象分个类,比如电器类,包括电视机,电冰箱,电脑等,它们都有一些共同的特点,都要使用电。这样又出现了一个概念叫做类。类就是一些对象共有性质的概括,就是同一类型的意思。还有另外一个概念,实例。一些具体的东西叫对象,那么实例又是什么呢?实例是一个具体的对象。类是指一类相同特性的东西,比如电器类,它下面有很多对象(当然也可以有子类),比如电视机,洗衣机等,对象只是一个概念,实例才是具体的东西,比如客厅中的那台电视机就是电视机对象的一个实例。所以放在场景中的的任何一件东西:影片剪辑、按钮、图形等都是一个具体的实例。对象都有它们的一些属性和方法,比如一个影片剪辑对象就有它自已的属性如

19、:大小、位置(x、y坐标)、颜色等。nAS中的对象都包括什么呢?它可以包含数据,也可以是舞台上的电影剪辑,也可以是舞台上的按钮等。既然包含了那么多对象,那么每种对象肯定有各自的属性,比如影片剪辑(MovieClip)对象,它的属性就有_height(高度),_rotation(旋转)等,这些属性不需要去特意的记忆,当使用的时候可以随时翻阅脚本字典。在以后的教程中会陆续介绍一些基础脚本的使用技巧。n属性的表示方法: n对象名称._属性名称 (在AS3中是:对象名称.属性名称) n比如,在场景中有一个影片剪辑,属性面板中为它指定实例名称为:mc,那么就可以在AS中为它指定属性: nmc._x =

20、200; nmc._y = 300; n那么元件mc被放在了舞台(200,300)表示的位置。n_visible属性:它可以设置对象是否可见,如果设为false,就不可见,设为:true就可见。n比如:要让mc不可见就可用如下的代码: nmc._visible = false; n这样运行时就看不见该mc,如果想看见它,可用如下的代码: nmc._visible=true; 1Math nMath是一个顶级类,在它里面主要包含了一些数学运算的函数:如三角函数sin()、cos()等。下面介绍它的几个常用的方法: n(1)random() nMath类中的一个函数,它的作用是产生一个到之间的随机

21、数。这个语句经常在下雨、下雪、烟花等特效中用到,语法格式如下: nMath.random()。(2)round()、ceil()、floor() nMath类的三个取得整数的函数,它们的作用分别是Math.round();是采用四舍五入方式取得最接近的整数。Math.ceil();是向上取得一个最接近的整数,Math.floor(); 和Math.ceil();相反,向下取得一个最接近的整数。nMath.round(); nMath.ceil(); nMath.floor(); n结合这些函数,可以实现下面的这些功能: nMath.round(Math.random(); n这个表达式可以生成

22、一个0.0和1.0之间的一个数,然后四舍五入取得一个整数。这样所生成的数字就是0或1。这个表达式可以用在各有50的可能的情况下,例如抛硬币,或者true/false指令。nMath.round(Math.random()*10); 是将所生成的小数乘以10,然后四舍五入取得一个整数。n要创建一个1到10之间的随机数,可以这样写: nMath.ceil(Math.random()*10); n应为是Math.ceil向上取值,所以不会产生0。要创建一个5到20的随机数可以这样写: nMath.round(Math.random()*15)+5; n也就是说,如果要创建一个从x到y的随机数,就可以

23、这样写: nMath.round(Math.random()*(y-x)+x; nx和y可以是任何的数值,即使是负数也一样。实例:使用Math.random()制作加法练习器n(1)执行【文件】|【新建】命令,新建一个文件,其余设置保持默认值,并通过按【Ctrl+S】,将该文件保存为“加法练习.fla”。n(2)将【图层1】修改为【题目】,并在上面绘制3个静态文本框和2个动态文本框,1个输入文本框,具体如下图所示。静态文本框的内容为“加法练习”、“+”、“=”。两个动态文本框分别取名为“a”、“b”。输入文本框取名为“shuru”。内容建立好之后,在第2帧的位置插入帧。n(3)在图层【题目】的

24、上方,添加个图层【按钮】,并在其中放置如图所示的两个按钮“确定”、“下一题”。分别给两个按钮的实例取名为“btnOk”和“btnNext”。内容建立好之后,在第2帧的位置插入帧。n(4)在图层【按钮】的上方,添加一个图层【显示结果】,并在该层的舞台上,放置如图所示的动态文本框,取名为“msg”。n(5)在图层【显示结果】的上方新建一个图层【as】,并在第1帧的代码视图中,输入如下图所示的代码。在第2帧加入代码“gotoAndPlay(1)”。n(6)按钮上分别加入如下代码n上述代码的意思是首先通过Math类的random()方法,随机在两个动态文本框输入两个数,然后由用户,把标注答案输入到输入

25、文本框,单击按钮“确定”的时候,用户的答案会和输入的答案比较,对于相等、大于、小于三种情况,程序都作出了判断,并把结果显示在了动态文本框中。该实例的重点:是当随机计算出两个值的时候,要使用一个变量存着,以备和用户输入的答案作比较。(3)atan2() n该函数的意思是可以返回一个点与x轴的夹角。语法是这样的: nMath.atan2(y,x) n请注意,这里点的坐标是y在前,x在后,跟一般的相反。 natan2()得出的度数是弧度。为了读者运算,下面了解下角度与弧度的转换。n在AS中计算常常是用弧度,而直观操作又常常用到角度,因此,就会常常用到角度弧度转换的问题,可以通过下述的公式对角度和弧度

26、进行转换: n角度 弧度 * 180/Math.PI n弧度 = 角度 * Math.PI/180 2Date n这个类提供了很多处理日期与时间的函数。Date类提供了对日期和时间的操作方法,在这一节中还将介绍另一个类Timer,它提供了对时间间隔的操作。n要使用Date类首先要创建一个Date类实例: nvar now:Date = new Date(); n创建了Date实例后,就可以调用Date类的方法,来获取当前时间。ngetDate()方法:将返回当前的号数,返回值是1-31之间。ngetDay()方法:返回当前是星期几,0-6,0代表星期日。ngetFullYear()方法:返回当前年份,4位数。ngetHours()方法:返回当前是几点,0-23。ngetMinutes()方法:返回当前是分钟数,0-59。ngetMonth()方法:返回前的月份数,0-11。请注意这里是0-11,即0代表1月。那么当前的月份应该是: getMonth() +1. ngetSeconds()方法:返回当前的秒数,0-59。ngetTime()方法:返回当前时间自通用时间1970年1月1日午夜以来的毫秒数

温馨提示

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

评论

0/150

提交评论