actionscript计算机教育全部内容还差几个组件_第1页
actionscript计算机教育全部内容还差几个组件_第2页
actionscript计算机教育全部内容还差几个组件_第3页
actionscript计算机教育全部内容还差几个组件_第4页
actionscript计算机教育全部内容还差几个组件_第5页
已阅读5页,还剩851页未读 继续免费阅读

下载本文档

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

文档简介

1FlashActionScript3.0

重庆师范大学计算机与信息学院

2010级计算机专业教案

2013年6月(旧内容全部修改完成)

戴政国讲授12第一篇AS基础23一、代码框的设置选定时间轴上的关键帧,按F9键弹出代码框。单击代码框右上角上的属性图标,可以弹出属性菜单,如下图所示:1、导入脚本:可以把一个as文件内容导入到代码框中。2、导出脚本:可以把代码框中的脚本导出为as文件。3、行号:在代码框中显示行号,便于查看和阅读代码344、自动换行:当代码超过代码框宽度时自动换行。语法检查自动套用格式显示代码提示插入目标路径寻找将新项目添加到脚本中显示和隐藏工具箱工具箱455、首选项(ctrl+U):弹出首选项对话框。5667788二、常用术语1、对象对象是属性和方法的集合。例如按钮、影片剪辑、图形元件等。对象类型:自定义对象和内置对象。内置对象在语言中预先定义了,可以直接拿来使用。自定义对象通过AS脚本指定,通常为自定义类,其属性和方法可以由用户设定。2、实例实例一般由类的构造函数创建,属于某个类的对象。类的每个实例均包含了该类的所有属性和方法。9实例名称是脚本中用来表示影片剪辑实例和按钮实例等对象的唯一名称,相当于对象的name,可以在对象的属性框里指定实例名称。在下图中,在舞台上添加了一个影片剪辑,然后在影片剪辑的属性框里指定实例名称.91010取实例名称先选定对象,再取实例名称11113、属性属性是对象的特性。例如,对象的位置、大小和颜色等都是对象的属性。4、方法(方法函数)方法或者方法函数是类的关联函数。例如play()方法函数和stop()方法函数是movieClip类的内置方法函数,它指定了影片剪辑内部的动画处于放映状态还是处于停止状态。5、事件事件是在SWF文件播放时发生的动作,多半与鼠标操作有关,例如单击、双击、移动等。12as实作1:事件与方法函数文件名:学号姓名as实作1_事件与方法函数.exe温馨提示:在此实验做完以后要用屏幕记录器记录和说明此实验的制作过程,特别是每句代码的意思。要交FLA和EXE文件。实验步骤和要求:(1)新建一个AS3.0的fla文档,然后再新建一个影片剪辑【简单动画】。在新建的影片剪辑里做一个简单的动画,例如一个椭圆从左到右地运动,效果请看下图。1213131414151516(2)给影片剪辑对象取实例名称为:my_mc设置方式请看上图。(3)添加两个按钮挂在主时间轴图层1的第一帧上,放大按钮、调整好位置,取实例名称分别为:stop_btn和play_btn161717181819(4)在主时间轴上添加图层2,在图层2的第一帧上添加代码,代码如下:1920206、动作在播放SWF文件时为完成某些任务所执行的语句。7、数据类型数据类型描述变量的信息种类。在as3.0动作脚本中数据类型主要分为基元数据类型(原始数据类)和核心类数据(复杂数据类型)类型。AS3.0中基元数据类型包括:

Boolean、int、uint、Number、String、Null、和void。21AS3.0核心类还定义下列复杂数据类型:Object、Array、Date、Error、Function、RegExp、XML和XMLList。注:AS3.0和AS2.0在数据类型中有差异。例如在AS2.0中有MovieClip类等。其实每个类都是一种数据类型,都可以把类名当成数据类型来使用。后面要详细讲解数据类型。8、变量变量是保存数据的存贮空间,AS3.0要求变量先定义后使用,否则会报错,变量定义格式:212222var变量:数据类型;var变量:数据类型=数值;varxx:Number=15;//定义数据类型与赋值同时进行varxx=15;//虽然xx变量没有指定数据类型,但用赋值的方法指定了数据类型,在AS3.0中可使用。var只定义变量,但不能确定数据类型。下面还有两种定义变量和赋值的方式:varxx;xx=22;//通过赋值的方法来确定数据类型23varyy:int;yy=11;//先确定数据类型再赋值下面为变量定义和赋值时常见形式和错误:vari;//写法正确,只声明了变量,但未指定变量类型。vari:*;//写法正确,意思同上。Vari;//写法错误,因为Var错了。vari:int;//写法正确,指定了变量和类型。vari:int=2;//写法正确i;//写法错误,不能这样定义变量2324i=1;//用法错误,变量先定义再赋值。vari:int=“hello”;//错!定义的变量类型与赋值数据类型不对。AS3.0支持同时声明多个变量。vara:int,b:uint,c:String,d:Boolean=true;变量和常量的命名规则1)命名规则必须遵守标识符命名规则。2)命名不能使用关键字和AS的保留字。3)定义的变量和常量不能重名。2425变量命名的注意事项:1)使用的英语单词时要注意与变量或者常量的意思接近,这样好记忆。2)当变量名用几个英文字词组成时最好第一个词小写,以后每个独立字词的第一个字母都大写(这是标识符命名规则)。3)在变量名能够清楚表达意思时越短越好。25269、标识符用于表示变量、属性、函数和方法(也称为方法函数)的名称。标识符命名规则:规则一:标识符的第一个字母必须是字母、下划线和$符,其后的字符可以是字母、下划线、$符和数字,要区分大小写。Varabc:int;//Var错,这是初学者的常见错误varabc:int;//var正确2627varabc:Number;varAbc:Number;varABc:Number;varABC:Number;varaBc:Number;varabC:Number;以上定义的6个变量名中有大小写之分,结果定义了6个不同的变量。2728规则二:当标识符由几个英文字词组成时,第一个字词的字母全部小写,以后每个英文字词的第一个字母都要大写。10、常数和常量常数没有名称,直接使用。而常量有名称,只是常量中的内容不变。一般书中常数和常量没有区分。在AS3.0中,常量定义:const常量名:数据类型;const常量名:数据类型=值;282929undefined表示未定义常量,没有定义或者没有赋值的变量内容可用此常数来表示。Math对象中的部分常量,使用时前面都要加Math.作为前缀词,表示是Math类中的常数:常量说明Math.E表示自然数eMath.LN10表示以10为底的自然对数的

值2.30Math.LN2表示以2为底的自然对数的

值0.693Math.PI表示圆周率π,3.1415930Math.SQRT1_2表示1/2的平方根0.707Math.SQRT2表示2的平方根1.414303131AS实作2:常量验证实验文件名:学号姓名AS实作2_常量验证实验.fla在图层1的第一帧上添加以下代码,然后Ctrl+回车,看输出结果。trace()函数只在输出面板上显示内容323211、关键字有特殊含义的保留字。这类保留字已经被系统使用,在代码框里用蓝色显示。用户不能把关键字再次当作标识符来使用,即最好不要用关键字作为变量名和函数名等。12、运算符对于不同类型的数据有不同的运算符。运算符操作的量称为操作数。13、表达式由运算符和操作数两部分组成。不同类型的数据一般有不同的表达式。333314、函数函数是可重复使用的一组代码,大部分有返回值,有些没有返回值。当函数有返回值时要在函数后面注明返回值的数据类型,如果函数没有返回值,则数据类型为void。函数类型:内置函数和自定义函数内置函数是Flash自带函数,一般在Flash中的“顶级”函数可以直接使用。而属于对象的函数称为方法或者方法函数,不属于对象函数称作系统函数,用户可以在AS代码框里归类中寻到系统函数。34(1)内置函数如果调用函数只需要给函数传递参数即可.isNaN(somevar);//函数返回值为Boolean。此函数测试somevar变量是不是非数字,是非数字返回true,否则返回false。例如:(请自己调试一下)varvar1:int=15;varvar2:Number=20;varvar3=123;varvar4="abc";trace(isNaN(var1),isNaN(var2),isNaN(var3),isNaN(var4));//输出结果:false,false,false,true3435getTimer();//返回自SWF文件开始播放后已经放映过的毫秒数,函数返回值为Number。

AS实作3:检测播放时间文件名:学号姓名AS实作3_检测播放时间要求和步骤:1)在图层1上做一个50帧的简单动画,矩形从左到右地运动。2)在图层2的40帧处挂代码:trace(getTimer());//函数运行要花费时间,结果每秒12帧的播放速度要稍微慢一些。353636373738Date类也是顶级类,它里面的方法函数可以直接使用。在图层1上做一个50帧的简单动画,在图层2的第一帧挂上以下代码提取日期和时间:AS实作4:提取电脑时钟里的日期和时间文件名:学号姓名AS实作4_提取电脑时钟里的日期和时间varmyDate:Date=newDate();//Date类构造函数newDate()把电脑时钟里的日期和时间复制到myDate变量中。varmyHours:Number=myDate.getHours();varmyMinutes:Number=myDate.getMinutes();varmySconds:Number=myDate.getSeconds();3839varmyMonth:Number=myDate.getMonth();//取月份,0~11,一月份为0varmydate:Number=myDate.getDate();//取日期(天数),1~31天varmyDay:Number=myDate.getDay();//取星期几,0~6,星期天为0varmyYear:Number=myDate.getFullYear();//取四位年数trace(myDate);trace(myYear,myMonth+1,mydate,myDay,myHours,myMinutes,mySconds);39404041每过50帧运行一次代码,提取一次日期和时间。4142有时我们不知道函数返回的数据类型,可以在代码框里选定函数名后按F1键,弹出帮助框,可使用帮助寻找函数的返回数据类型。(2)自定义函数:AS3.0和AS2.0代码中通用的自定义函数格式:function函数名(参数表)[:返回类型]{函数内部代码[return返回值]}当函数无返回值时,则返回类型为void。4243AS1.0和AS2.0代码中通用的自定义函数格式:函数名=function(参数表)[:返回类型]{函数内部代码[return返回值]}当函数无返回值时,则返回类型为void。AS实作5:函数定义与参数文件名:学号姓名AS实作5_函数定义与参数.fla4344functioncircle(radius:Number):Number{//radius是函数的形参,数据类型为Number,//函数返回值的数据类型也是Number.varaa:Number=radius*radius*Math.PI;returnaa;//返回aa,即aa作为函数的返回值}trace(circle(5));//常数5是实参varbb:Number=5;trace(circle(bb));//变量bb是实参44454546AS实作6:在AS2.0中定义函数文件名:学号姓名AS实作5_在AS2.0中定义函数要求和步骤:1)把【AS实作5】另存为【AS实作6】,并把AS3.0版本改成AS2.0。2)在图层2的第一帧上改写代码:circle=function(radius:Number):Number{//radius是函数的形参,数据类型为Number,//函数返回值的数据类型也是Number.4647varaa:Number=radius*radius*Math.PI;returnaa;//返回aa,即aa作为函数的返回值}trace(circle(5));//常数5是实参varbb:Number=5;trace(circle(bb));//变量bb是实参4748类构造函数用于创造或者复制一个类的实例,当要创建一个对象实例时一般可以使用类的构造函数来创建。例如要创建一个Array数组对象,可以使用Array()类构造函数,其代码如下:varmyDate:Date=newDate();varmyArray:Array=newArray();varmyObj:Object=newObject();类的构造函数格式:new类名();484949用类构造函数创建一个实例的通用格式:var变量名:类名=new类名();在变量中存放着由类构造函数创建的实例。类的实例在数据和结构上与类完全相同,实例是类的复制品。类不能直接使用,它只是个定义体,必须通过类的实例才能被程序处理和使用。AS实作7:类的构造函数实验文件名:学号姓名AS实作7_类的构造函数实验.fla505051注释:数组名.push(元素)可以把【元素】添加到【数组】的最后面。在类中还有一种动态类,实例的【属性】数量可以任意添加不受限制。例如Object类就是一个动态类,可以在它的实例里添加自己需要的属性种类。AS实作8:在Object动态类实例中添加属性文件名:学号姓名AS实作8_在Object动态类实例中添加属性.exe要求录屏说明515252535315、参数参数用于向函数传递值的占位符。在函数内部定义的参数叫形参(形式参数),在使用函数时在形参位置处填写的常数或者变量称为实参(实际参数)。例如:定义函数时:function函数名(形式参数表)[:函数返回值的数据类型]{函数代码};调用函数时:函数名(实际参数表);5416、包包是存放一个或者多个类文件的目录,包名为fla文件所在目录到as文件存放目录之间的相对路径。例如,fla文件存放在d:\flash目录下,而as文件存放在d:\flash\aa\bb\daizg,那么包名为:aa.bb.daizg在自定义类中没有包名时,说明fla文件与as文件放在一起,即放在同一目录下。在fla文件中引用自定义类时,要用以下语句导入引用自定义类:import包名.as自定义类文件名;5455例如,包名为aa.bb.daizg、自定义类文件名为Circle.as时,在fla文件中导入引用自定义类的语句为:importaa.bb.daizg.Circle;如果fla文件和自定义类as文件放在一起时,在导入引用自定义类时没有包名,用以下语句:importas自定义类文件名;具体来讲:importCircle;555617、类类可以分为自定义类和文件类。自定义类当一般类来使用,在fla文件代码框里用import语句导入,再用类的构造函数创建一个实例。而文件类一般直接挂在舞台的属性框里,不在fla文件代码框里导入,也不使用其构造函数。文件类主要用来测试类代码用的,或者用AS文件直接产生动画效果,不要代码框里写代码。自定义类可以用来创建和定义新对象的数据类型。在定义类时要求as文件名与类名和构造函数名同名,大小写一样,否则会报错。例如把圆的面积计算写成自定义类。5657AS实作9:自定义类、属性和方法函数文件名:学号姓名AS实作9_自定义类、属性和方法函数要求和步骤:(1)在指定目录下(例如d:\或者e:\my)建立一个as文件,保存为Circle.as文件。注意文件名字母的大小写。(2)在as文件中写以下代码:package{//没有包名,说明fla文件与as文件放在一起的publicclassCircle{5758//定义Circle类,publicclass是固定搭配。

publicvarradius:Number;//定义半径。在自定义类中定义的全局变量今后将在实例对象里可作为其属性来使用publicvarcircumference:Number;//定义周长,全局变量publicvars:Number;//定义圆面积,全局变量publicfunctionCircle(r:Number=1):void{s=Math.PI*r*r;circumference=2*Math.PI*r;5859radius=r;}//下面定义方法函数用于计算圆面积publicfunctionarea(R:Number):Number{returnMath.PI*R*R; }}}(3)在Circle.as文件同一目录下建立一个fla文件,取名为【AS实作9:自定义类】,并在图层1的第一帧上写代码:importCircle;5960varaa:Circle=newCircle(5);trace("圆的半径为:",aa.radius);trace("圆的周长为:",aa.circumference);trace("圆的面积为:",aa.s);trace("用方法函数计算圆面积:",aa.area(5));//ctrl+enter命令以后,显示输出结果:6061小结:(1)在自定义类中,package后面没有包名,说明自定义类的as文件与fla文件放在同一个目录下。如果有包名,说明fla文件与as文件不在不同的目录下,包名是fla文件到as文件的相对路径。一般as文件放在fla文件所在目录的下级子目录中。(2)在定义类中定义类名时,必须使用:publicclass类名{类代码}(3)在自定义类模块里定义的全局变量可以成为实例变量对象的属性来引用。如果不是全局变量不能当成实例对象的属性来引用。6162(4)在自定义类中定义的全局函数将成为实例对象的方法函数来使用。如果自定义类的as文件与fla文件不在同一目录下,那么会有包名,并且在用import语句导入自定义类时也要添加包名路径。AS实作10:包名的意义和包名对自定义类引用的影响文件名:学号姓名AS实作10_包名的意义和包名对自定义类引用的影响6263我们设想,如果as自定义类文件放在fla文件所在目录的下级子目录aa\bb\daizg下面,则包名为:aa.bb.daizg例如,fla文件放在d:\下,那么我们可以在d盘根目录下建立一个aa目录(文件夹),又在aa目录建立一个bb目录,在bb目录下建立daizg目录,最后在daizg目录建立自定义类的as文件。要求与步骤:(1)用【我的电脑】建立目录结构:d:\aa\bb\daizg6364(2)把上个实验的fla文件另存为到d:\下。(3)把Circle.as文件另存为到daizg目录下。(4)把fla文件中的第一句代码修改成:importaa.bb.daizg.Circle;其它代码不变。(5)把Circle.as文件中的第一句代码修改如下:packageaa.bb.daizg{Ctrl+Enter,测试影片输出显示结果正确。646565三、基本语法1、点点(.)表示“的”的关系,表示了一种隶属关系或者属于关系。例如:桌面.书桌面.书.字My_mc.x;//在AS2.0中,横坐标为_xMy_mc.play();66662、分号语句的结束符。在每句代码的后面都应该打分号。3、大括号在事件处理函数、类定义和一般函数定义时,要用大括号组合在一起形成代码块,即大括号里的代码是函数或者类的定义体.//函数functionarea(side:Number):Number{代码;}67//类publicclasscircle(radius){代码;}classsquare(side){代码;}没有public

class定义的类只能在包中使用,不能用于包外创建实例。6768684、小括号在函数定义时,要将所有形式参数都放在小括号中,以下函数定义法在AS2.0和AS3.0里都能使用。functionmyfuction(name,age,reader){//代码}在以上函数小括号中,name、age、reader三个参数都是形式参数,简称形参。在函数调用时,也要在小括号里填写参数,这些参数又称为实际参数,简称实参。69695、注释//注释说明字符串,只用于一行./*注释一个片区,用于数行或者一个片区.*/6、分区大小写AS动作脚本代码要区分大小写。对于专业程序开发者来讲,这是非常幸运的事情,但对于平时不严格要求自己的业余编程者来讲是件不幸的灾难。大家一定要牢记AS代码要区分大小写。7070四、数据类型进阶1、字符串类型String常量字符串用定界符引起来。定界符有双引号和单引号。varmystring="L7";vargreeting="WELCOME,"+'CHILD';如果在字符串中要表示双引号,要用转义符\”varMYSTR="\"WAVE\"";在变量MYSTR中保存了【“WAVE”】字符串。71

转义符如下表所示:

转义序列字符\b退格符\f换页符\n换行符\r回车符\t制表符\”双引号\’单引号\\反斜杠\000-\377以八进制指定的字节\x00-\xFF以十六进制指定的字节\u0000-\uFFFF以十六进制指定的16位Unicode字符7172722、数字类型NumberNumber数据类型是双精度浮点数。数字对象的最小值大约为5e-324,最大值大约为1.79e+308。用户可以使用+、-、*、/、%(求模)、++(递增)和--(递减)等算术运算符来处理数字,也可使用内置的Math和Number类的方法来处理数字。例如:varaa:Number=Math.sqrt(100);trace(aa);//输出结果10733、整数类型int有正整数和负整数。var变量名:int;例如:

varab:int;4、非负整数类型uint变量取值范围包括0和正整数。如果给uint类型的变量赋值负数,不报错,但会出现数值错误。var变量名:uint;737474例如:AS实作11:变量的取值范围文件名:学号姓名AS实作11_变量的取值范围

varcd:uint;varab,cd,ef:uint;varhj:int;ab=0;cd=1;ef=-1;hj=-175trace("ab="+String(ab)+"\n"+"cd="+cd+"\n"+"ef="+ef+"\n"+"hj="+hj);//String()函数将数值转换成字符串//uint变量和int变量在字符串表示式中自动转换为字符串数字trace("*****************");//也可以用下句代码输出trace("ab=",ab,"\n","cd=",cd,"\n","ef=",ef,"\n","hj=",hj);757676775、布尔类型Boolean真值为true和false。当true和false转换成数值时会变成1和0。6、空值类型空值数据类型只有一个值,即null,它表示“没有值”,也就是没有任何数据。Null值可以用在以下场合中:指示变量尚未赋值。指示变量不再包含值。作为函数的返回值,指示函数没有可以返回的值。作为函数的参数,指示省略了一个参数。7778787、无返回数据类型void用于函数无数据返回时。8、Object对象类型对象数据类型,是一种动态类,可以随意添加实例的属性数量。例如:varuser:Object=newObject();="Irving";user.age=32;user.phone="555-1234";trace(,"\n",user.age,"\n",user.phone);7979在上例中,代码可以改写如下:varuser:Object=newObject(:"Irving“,user.age:32,user.phone:"555-1234“);trace(,"\n",user.age,"\n",user.phone);例如:也可以用大括弧对Object对象添加新属性:varuser:Object;user={name:"Irving",age:32,phone:"555-1234"};//用大括弧添加Object对象的新属性80//可以用以下代码以上两句代码//varuser:Object={name:"Irving",age:32,phone:"555-1234"};trace(,"\n",user.age,"\n",user.phone);AS实作12:在Object对象上添加属性值文件名:学号姓名AS实作12_在Object对象上添加属性值将以下代码挂在图层1的第一帧上。808181varfirstObj:Object=newObject();firstObj.firstVar="helloworld";firstObj.secondVar=28;firstObj.thirdVar=newDate(1980,0,1);//1980年1月1日varsecondObj:Object={firstVar:"helloworld",secondVar:28,thirdVar:newDate(1980,0,1)};//在大括弧内放置Object对象的属性和属性值trace("first对象输出********");trace(firstObj.firstVar+"\n"+firstObj.secondVar);trace(firstObj.thirdVar);8282trace("second对象输出********");trace(secondObj.firstVar+"\n"+secondObj.secondVar+"\n"+secondObj.thirdVar);8383注释:1、GMT指格林尼治时间正8小时时区,刚好就是北京时间。2、大括弧里可以放置Object常量,可以对某Object变量赋值。84数组是个容器,可以容纳各种不同的内容,将多种对象组合在一起。在编程过程中,为了储存各个具有共同特性的变量,可使用数组作为存取工具。vararr1:Array;//定义了一个数组vararr2:Array=[];//定义了一个空数组vararr3:Array=newArray();//同上vararr4:Array=[1,2,3,4];//直接为数组赋值1,2,3,4、vararr5:Array=newArray(1,2,3,4);//意思同上8485vararr6:Array=newArray(5)//声明长度为5的空数组,即有0~4个单元,但所有单元(元素)都为空。数组常用属性和方法函数:1)数组名.push(元素名);功能:把元素放在数组最后那个单元里。2)数组名.length;功能:输出数组长度。3)数组名[i];功能:访问i数组元素。4)数组名[i][j]:功能:访问第i行和第j列的数组元素。858686for....in参考资料:for(variableIterantinobject){statement(s);}枚举对象的属性或数组中的元素。对象的方法不能由for..in动作来枚举。有些属性不能由for..in动作来枚举。例如,不能枚举影片剪辑属性,例如x和y。在外部类文件中,和实例成员不同的是,静态成员是不能枚举的。for..in语句不会将相同的属性名枚举两次。如果child对象和parent对象中都有同样的属性,则child用for..in语句枚举属性时忽略parent对象中的该属性。8787示例:varmyObject:Object={firstName:"Tara",age:27,city:"SanFrancisco"};for(varpropinmyObject){trace("myObject."+prop+"="+myObject[prop]);}输出:

myObject.firstName=TaramyObject.age=27myObject.city=SanFrancisco8888示例:varmyArray:Array=newArray("one","two","three");for(varindexinmyArray)trace("myArray["+index+"]="+myArray[index]);输出:myArray[2]=threemyArray[1]=twomyArray[0]=one8989小结:1、数组的下标是0、1、2、3。。。2、Object对象的下标是它的属性名。Object对象也可以看成是一种特殊数组,或者说数组由Object对象演变而来,数组单元坐标相当于Object对象的属性名。3、可以在一维数组中把每一个单元设置成一个Object对象,变成数组对象,请看下张幻灯片。AS实作13:Object对象数组文件名:学号姓名AS实作13_Object对象数组9090varusersArr:Array=newArray();usersArr.push({姓名:"戴政国",性别:"男"});usersArr.push({姓名:"张先智",性别:"男"});usersArr.push({姓名:"江芸",性别:"女"});usersArr.push({姓名:"王杰",性别:"女"});/*push方法将一个或多个元素添加到数组的结尾。用{对象属性1:属性值,对象属性2:属性值,….}形式给Object对象赋值。注意:数组中每个元素单元都是一个Objict对象。将常数、变量或者对象等组织到数组中的好处是:可以更方便地循环访问变量,如以下步骤中所示。*/9191vari:Number;for(i=0;i<usersArr.length;i++){trace(usersArr[i].姓名,usersArr[i].性别);}Ctrl+回车测试影片,“输出”面板上将出现以下结果:92929393数组单元姓名性别。。。。。。0戴政国男

1张先智男

2江芸女

3王杰女

对象数组的结构像个二维表,可根据需要决定列数(对象属性)。我们可以把Object对象的数组结构看成是一个动态数组,需要多少对象属性可以直接添加,数组列数将自动调整。数组Object对象94例:可以在Object对象后面可随意添加属性和属性值。AS实作14:在Object对象数组中添加Object对象属性文件名:学号姓名AS实作14_在Object对象数组中添加Object对象属性949595varmyObj:Object={var1:"One",var2:"Two",var3:18,var4:1987};vari:String;for(iinmyObj){trace(i+":"+myObj[i]);}/*输出以下结果:var1:Onevar2:Twovar3:18var4:1987*/9696trace("*****************************");myObj.大学名="重庆师范大学";myObj.学院名="计算机学院";myObj.年级='2011级';myObj.专业='电子商务';//双引号和单引号都是字符串的定界符for(iinmyObj){trace(i+":"+myObj[i]);}//Object对象属性名也能用汉字,但一般不用汉字。注释:枚举循环不按原对象属性顺序访问和输出,每次访问输出都不同,如下图所示。979798再运行一次,结果相同,但输出顺序不同989999资料:push(Array.push方法)publicpush(value:Object):Number将一个或多个元素添加到数组的结尾,并且push函数将返回该数组的新长度。可用性:ActionScript1.0、FlashPlayer5参数value:Object―要追加到数组中的一个或多个值。返回Number―表示新数组长度的一个整数。100示例下面的示例创建包含两个元素的数组myPets_array,这两个元素为cat和dog。第二行将两个元素添加到数组。因为push()方法返回数组的新长度,所以最后一行中的trace()语句将myPets_array的新长度(4)发送到“输出”面板。varmyPets_array:Array=newArray("cat","dog");varpushed:Number=myPets_array.push("bird","fish");trace(pushed);//输出:4100101101//以上代码可以改写成:varmyPets_array:Array=newArray("cat","dog");myPets_array.push("bird","fish");//没有赋值语句,则push()方法函数的返回值没有用起来。varpushed:Number=myPets_array.length;//数组的length属性里放置了数组的长度值。trace(pushed);//输出:4102AS实作15:随意决定数组对象中的属性数量和属性名文件名:学号姓名AS实作15_随意决定数组对象中的属性数量和属性名/*在数组对象中,不要求所有对象的属性个数一样,也不要求属性名称一样,可以随意决定属性的数量多少和属性名称。*/102103103varmyarr:Array=newArray();myarr[0]={单位:"重庆大学",姓名:"张三",性别:"男",年龄:30,电话:"6536666"};myarr[1]={单位:"南京大学",姓名:"李四",性别:"男",年龄:20};myarr.push({单位:"北京大学",姓名:"小王",性别:"女"});myarr[3]={姓名:"杨扬",性别:"男"};myarr.push({炊具:"铁锅",食品:"大米"});104104vari:Number;for(i=0;i<myarr.length;i++){ trace("元素"+i+":"); for(varkinmyarr[i]){ trace(k+":"+myarr[i][k]); } trace("***************************");}105105106106二维数组。先创建了一个数组,然后在对每个单元(元素)赋值时采用数组方式赋值,那么便会成为二维数组。AS实作16:二维数组文件名:学号姓名AS实作16_二维数组varmyarr:Array=newArray();myarr.push(["重庆大学","张三","男",30,"6536666"]);myarr.push(["南京大学","李四","男",20]);myarr[2]=["北京大学","小王","女"];myarr[3]=["杨扬","男"];107107myarr.push(["铁锅","大米"]);vari:int;vark:int;for(i=0;i<myarr.length;i++){trace("元素"+i+":");for(k=0;k<myarr[i].length;k++){trace("myarr["+i+"]["+k+"]="+myarr[i][k]);} trace("***************************");}108108109109数组01234。。。0重庆大学张三男306536666

1南京大学李四男20

2北京大学小王女

3杨扬男

4铁锅大米

。。。

从下表中可以看出,二维数组也是动态数组,用户想要多长就多长,只需要赋值即可,不需要额外定义。11011010、void类型Void数据类型有一个值void,用来在函数定义中指示函数没有返回值,如下例所示://创建返回类型为Void的函数

functiondisplayFromURL(url:String):Void{代码}11、原始和复杂数据类型可以将所有不同的数据类型值划分为两个主要的类别:primitive

或complex。111111原始值(即原始数据类型)是ActionScript在最低抽象层存储的值,这意味着对原始数据类型的操作比对复杂数据类型的操作往往会更快、更高效。原始值:Boolean、int、uint、Number、String。复杂值(或复杂数据类型)不是原始值,但它引用原始值。通常,我们称之为引用数据类型。复杂值属于Object数据类型,或者说是基于Object数据类型的一种数据类型。定义复杂值的集合的数据类型包括:Array、Date、Error、Function、RegExp、XML和XMLList。112112五、变量作用域和默认值1、变量的作用域分类:全局变量和局部变量。类或者函数内定义的变量为局部变量。而在函数或者类之外定义的变量为全局变量。全局变量在代码的任何地方都可以访问,而局部变量只能在函数内或者类里访问。在类中可以用public定义全局变量和全局函数。类中的全局变量可成为类实例的属性,而类中的全局函数可成为类实例的方法函数。113AS实作17:变量的有效性文件名:学号姓名AS实作17_变量的有效性说明:本实验要用例1~例4,做完一个例子就用/**/注释掉代码,然后在下面再做下一个例子。四个例子都有图层1的第一帧上写代码。113114114//例1vari:int=1;//i是全局变量functionTest(){trace(i);};Test();//输出1,说明全局变量在函数内有效。//例2functionTest(){vari:int=1;trace(“函数体内访问变量i:”+i);}115115Test();trace(“函数体外访问变量i:”+i);//报错。在函数体内定义的变量在函数体外无法访问。//例子3vari:int=10;trace("函数使用前访问变量i:"+i);functionTest(){vari:int=1;trace("函数体内访问变量i:"+i);}116116Test();trace("函数体使用后访问变量i:"+i);由于在函数体内重新定义了变量i,则在函数体外定义的变量i在函数体内被屏蔽了。当退出函数后在函数外定义的变量i又有效了。117117//例子4//注意i在循环体里定义的变量for(vari=1;i<5;i++){trace(“在循环体内部输出变量i:”+i);}trace(“在循环体外部输出变量i:”+i);//说明在循环体内部定义的变量在循环体外部同样用效。118118在AS3.0中,在两个循环中使用的循环变量名称相同时会发生错误,例如:for(vari=0;i<5;i++){代码1}for(vari=0;i<8;i++){代码2}这是由于在循环体里定义的循环变量在循环体外也是有效的,才导致了这种结果。119119在AS2.0中,要用以上方式定义全局变量:_global.变量名=值;不能在_global前加var变量定义前缀词。例如:_global.myname=“dzg”;//正确var_global.myname=“dzg”;//错误_global.counter=100;//声明全局变量trace(counter);//访问全局变量并显示100120120functioncount():Void{for(varcounter:Number=0;counter<=2;counter++){//局部变量trace(counter);//访问局部变量并显示0,1,2}}count();trace(counter);//访问全局变量并显示100最后显示结果:100,0,1,2,100121121AS实作18:全局变量与局部变量文件名:学号姓名AS实作18_全局变量与局部变量varcounter:Number=100;//通过赋值来决定变量类型trace(counter);//访问全局变量并显示100functioncount():Void{for(varcounter:Number=0;counter<=2;counter++){//局部变量122122trace(counter);//访问局部变量并显示0,1,2}}count();trace(counter);//访问全局变量并显示100最后显示结果:100,0,1,2,1001231232、变量的默认值在定义了变量以后不赋值时变量中有默认值。我们可以编写一个简单的程序取得常用变量的默认值。用AS3.0编写代码:AS实作19:变量的默认值文件名:学号姓名AS实作19_变量的默认值124varp:Boolean;trace("Boolean型变量的默认值是:"+p);vari:int;trace("int型变量的默认值是:"+i);varu:uint;trace("uint型变量的默认值是:"+u);varj:Number;trace("Number型变量的默认值是:"+j);124125125varobj:Object;trace("Object型变量的默认值是:"+obj);varstr:String;trace("String型变量的默认值是:"+str);varv:*;trace("*型变量的默认值是:"+v);1261263、常量意外被修改AS实作20:常量意外被修改文件名:学号姓名AS实作20_常量意外被修改常量一般不能修改,但数组常量被引用后有可能被修改。constarr1:Array=newArray(1,2,3);trace(arr1);//输出1,2,3vararr2:Array=arr1;trace(arr2);//输出1,2,3arr2[0]=100;127127trace(arr1);//输出100,2,3trace(arr2);//输出100,2,3//对于Number数据类型不会在引用中被修改。consta:Number=1;trace(a);//输出1varb:Number=a;trace(b);//输出1b=3;trace(a);//输出1trace(b);//输出3结论:对Number类型常量被引用后不会被修改。128128六、运算符1、数值运算符(1)加减乘除运算varn1:Number,n2:Number,sum:Number;n1=10;n2=20;sum=(n1+n2)/5;trace(sum);trace(n1*n2-100);输出结果:6,100129129(2)求模运算符%(求余数)varn1:Number=10;varn2:Number=22;trace(n2%n1);输出结果为:2trace(25%7);//输出4trace(-25%7);//输出-4trace(-25%-7);//输出-4,-号取反,级别高。trace(25%-7);//输出4,-号级高于%号。结论:求余数时要取被除数的符号,但不取除数的符号。130130(3)递增运算符++和递减运算符--i++相当于i=i+1i--也相当于i=i-1当然,++i和i++在单独时没有区别,但在关系表达式中有差别。if(++i>=20),意思是先i=i+1,然后再i>=20if(i++>=20),意思是先i>=20,然后再i=i+1AS实作21:数值运算文件名:学号姓名AS实作21_数值运算131131vari:Number=25%-7;trace(++i==4);//关系比较时要用==号trace(i);i=4;trace(i++==4);trace(i);输出结果:false5true5//i--和--i运算符的用法一样。132132(4)条件运算?:expression1?expression2:expression3

说明如果expression1的值为true,则返回expression2

的值;否则返回expression3

的值。AS实作22:条件运算文件名:学号姓名AS实作22_条件运算133varx1:Number=5;vary1:Number=10;varz1:Number;z1=(x1<6)?x1:y1;trace(z1);//输出:5z1=(x1>6)?x1:y1;trace(z1);//输出:10133134134算术运算符级别排列:()→取反(-)→*/→%→+-(5)算术赋值运算符X1+=10;→→X1=X1+10;X1-=10;→→X1=X1-10;X1*=10;→→X1=X1*10;X1/=10;→→X1=X1/10;X1%=10;→→X1=X1%10;135135例如:varX1:Number=115;trace(X1+=10);trace(X1-=10);trace(X1*=10);trace(X1/=10);trace(X1%=10);输出:125105115011.551361362、关系运算符和逻辑运算符常用关系运算符有:<小于>大于<=小于等于>=大于等于==等于===严格等于!=不等于!==严格不等于&&逻辑与||逻辑或!逻辑非一般而言,关系运算符的级别高于逻辑运算符,而在逻辑运算符里,依次按“非、与、或”排列高低运算级别。137137==和!=可以在String、Number和Boolean之间进行比较,运算时不同类型的数据自动转换,也能在对象和数组进行比较。而===是严格等于运算,不进行数据类型转换。两个操作数的类型不同时返回false。!==是===的反值。AS实作23:关系运算和逻辑运算文件名:学号姓名AS实作23_关系运算和逻辑运算138varaa:Number=10;varbb:Number=20;trace(aa>5&&bb==20);//输出为truetrace(aa==5||bb==20);//输出为truetrace(!(aa==5)&&bb==20||aa+bb>=50);//输出为true//**************************varaa:Boolean=true;varbb:Number=1;trace(aa==bb);//输出true138139139trace(bb==aa);//输出truetrace(aa!=bb);//输出falsetrace(bb!=aa);//输出falsetrace(aa===bb);//输出falsetrace(bb===aa);//输出falsetrace(aa!==bb);//输出truetrace(bb!==aa);//输出true3、位操作运算符按位运算符在内部处理浮点数,四个字节,32位二进制整型数。140140&按位and&=按位AND赋值运算符|按位or|=按位OR赋值运算符^按位异或^=按位XOR赋值运算符~按位非<<左移位>>右移位>>>按位无符号向右移位运算符>>>=按位无符号向右移位并赋值运算符141141AS实作24:位操作运算文件名:学号姓名AS实作24_位操作运算varaa=127;//二进制数为01111111varbb=4;//二进制数为00000100trace(aa&bb);//显示输出4trace(bb|aa);//显示输出127trace(aa^bb);//输出123trace(~aa);//输出-128trace(~bb);//输出-51421424、赋值运算符=赋值+=相加并赋值-=相减并赋值*=相乘并赋值%=求模并赋值/=相除并赋值<<=按位左移位并赋值>>=按位右移位并赋值>>>=右移位填零并赋值^=按位“异或”并赋值143143|=按位“或”并赋值&=按位“与”并赋值5、数据转换分为隐式转换和显式转换。隐式转换又称为自动转换,而显式转换是用代码指定数据转换。AS实作25:数据隐式转换文件名:学号姓名AS实作25_数据隐式转换1441441)隐式转换vara:Number=1.5;varb:int=a;//由于b是int(整型数据),在b中没有小数位了。trace(b);//输出1functiontest(n:int){trace(n)};varc:Number=10.10;test(c);//输出10,c数据从Number变成了intfunctiontests(s:Number):int{returns;}145145vard:Number=3.45;trace(tests(d));//输出3vari:Number=15;varj:String=“1”;trace(i+j);//输出151,程序运行时把Number型数据转换成为String数据类型。2)显式转换用代码来转换数据类型。AS实作26:数据显式转换文件名:学号姓名AS实作26_数据显式转换下面的红字都要调试146146(一)、其它数据类型转换成int、uint和Number任何数据类型都可以转换为这三种数据类型。1)Boolean数据转换为此三种数据类型varp:Boolean=true;trace(uint(p));//输出1trace(int(p));//输出1trace(Number(p));//输出1p=false;trace(uint(p));//输出0trace(int(p));//输出0trace(Number(p));//输出01472)数字字符串转换成此三种数据类型trace(uint(“5”));//输出5trace(uint(“-5”));//输出,从uint数据类型的最大数开始递减。trace(uint(“27”));//输出27trace(uint(“2.7”));//输出2trace(int(“3.7”));//输出3trace(int(“0x1A”));//输出26,26是十进制数trace(Number(“3.7”));//输出3.71471481483)包含非数字字符串时,int()和uint()函数返回0,而Number()函数返回NaN。

trace(uint(“5a”));//输出0trace(uint(“ten”));//输出0trace(uint(“1122”));//输出0trace(int(“5a”));//输出0trace(Number(“5a”));//输出NaN4)在AS3.0中,Number()不再支持八进制数。//八进制数0(零)开头。trace(Number(“044”));//在AS3.0下输出44,但在AS2.0下输出36149149其它数据类型转换为Number、int或uint数据类型的结果如下:Boolean:如果值为true,则结果为1;否则为0。Date:Date对象的内部表示形式,即从1970年1月1日午夜(通用时间)以来所经过的毫秒数。null:0Object:如果实例为null并转换为Number,则结果为NaN;否则为0。String:如果FlashPlayer可以将字符串转换为数字,则结果为数字;否则,如果转换为Number,则结果为NaN,如果转换为int或uint,则结果为0。undefined:如果转换为Number,则结果为NaN;如果转换为int或uint,则结果为0。150150(二)转换为Boolean1)数值数据类型(uint、int和Number)转换为Boolean时,如果数值为0,则结果为false;否则为true。对于Number数据类型,如果值为NaN,则结果也为false。下面的示例说明在转换-1、0和1等数字时的结果:varmyNum:Number;for(myNum=-1;myNum<2;myNum++){trace("Boolean("+myNum+")is"+Boolean(myNum));}本示例的输出结果说明在这三个数字中,只有0返回false值:Boolean(-1)istrueBoolean(0)isfalseBoolean(1)istrue1511512)在将字符串值转换为Boolean数据类型时,如果字符串为null或空字符串(“”),则会返回false。否则,将返回true。varstr1:String;//未初始化的字符串为null。

trace(Boolean(str1));//falsevarstr2:String=“”;//空字符串trace(Boolean(str2));//falsevarstr3:String=“”;//仅空白trace(Boolean(str3));//truetrace(Boolean(“123abc”));//true1521523)在将Object类的实例转换为Boolean数据类型时,如果该实例为null,则将返回false;否则将返回true:varmyObj:Object;//未初始化的对象为null。

trace(Boolean(myObj));//falsemyObj=newObject();//实例化

trace(Boolean(myObj));//true1531534)在严格模式下,系统会对布尔变量进行特殊处理,因为您不必转换即可向布尔变量赋予任何数据类型的值。即使在严格模式下,也可以将所有的数据类型隐式强制为Boolean数据类型。换言之,与几乎其它所有数据类型不同,转换为Boolean数据类型不是避免在严格模式下出错所必需的。下面的几个示例全部是在严格模式下编译的,它们在运行时按照预期的方式工作:154154varmyObj:Object=newObject();//实例化varbool:Boolean=myObj;trace(bool);//truebool="randomstring";trace(bool);//truebool=newArray();trace(bool);//truebool=NaN;trace(bool);//false155155下表概述了在从其它数据类型转换为Boolean数据类型时的结果:String:

如果值为null或空字符串(“”),则结果为false;否则为true。null:falseNumber、int或uint

温馨提示

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

评论

0/150

提交评论