收藏 分享(赏)

第2章 Flex 4脚本语言:ActionScript 3.0基础.ppt

上传人:wspkg9802 文档编号:8699101 上传时间:2019-07-08 格式:PPT 页数:79 大小:1.39MB
下载 相关 举报
第2章 Flex 4脚本语言:ActionScript 3.0基础.ppt_第1页
第1页 / 共79页
第2章 Flex 4脚本语言:ActionScript 3.0基础.ppt_第2页
第2页 / 共79页
第2章 Flex 4脚本语言:ActionScript 3.0基础.ppt_第3页
第3页 / 共79页
第2章 Flex 4脚本语言:ActionScript 3.0基础.ppt_第4页
第4页 / 共79页
第2章 Flex 4脚本语言:ActionScript 3.0基础.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

1、,第2章 Flex 4脚本语言:ActionScript 3.0基础,2.1 ActionScript 3.0语言概述,2.2 基本语言元素,2.3 运算符和表达式,2.4 流程控制,2.5 函数,2.6 面向对象编程,2.1 ActionScript 3.0语言概述,2.1.1 ActionScript 3.0简介 ActionScript是Adobe Flash Player和Adobe AIR运行环境下的编程语言,由嵌入在Flash Player中的ActionScript虚拟机(AVM)执行。ActionScript代码通常由编译器(如Adobe Flash CS4 Professio

2、nal或Adobe Flash Builder的内置编译器,或Adobe Flex SDK中提供的编辑器)编译为“字节代码格式”(一种由计算机编写并且计算机能够理解的编程语言),字节码嵌入在SWF文件中,SWF文件由Flash Player和AIR执行。,2.1.2 在Flex中应用ActionScript,1在MXML中编写ActionScript 在MXML文件中插入标签,即可编写ActionScript代码。例如:,2.1.2 在Flex中应用ActionScript,2在AS文件中编写ActionScript (1)启动Flash Builder 4,选择要在其中创建ActionScr

3、ipt类的Flex项目,单击“新建”按钮选择“ActionScript类”菜单项,弹出“新建ActionScript类”对话框,如图2.1所示。,2.1.2 在Flex中应用ActionScript,(2)在“包”文本框中输入类所在的包;在“名称”文本框中输入类名,类名必须以大写字母开头;在“修饰符”栏选择类的类型,其中“public”表示公有类,“internal”表示内部类。 在项目的src目录下将新建一个包,包中包含Circle.as文件,如图2.2所示。,2.1.2 在Flex中应用ActionScript,(3)双击打开Circle.as文件,代码编辑器中自动生成部分创建Action

4、Scipt类的代码,如图2.3所示。,2.1.2 在Flex中应用ActionScript,用户可以在代码编辑器的“package com.flex.demo”中定义ActionScript类,例如,要定义一个计算圆面积的类,可以使用以下代码: package com.flex.demo public class Circle/定义常量private const PAI:Number = 3.14;/定义属性: 半径private var radius:Number ;/构造方法public function Circle(radius:Number)this.radius = radius

5、;/获得圆的面积方法public function area():Numberreturn this.PAI*this.radius*this.radius; ,2.1.2 在Flex中应用ActionScript,3在MXML文件中引用ActionScript类 (1)使用source属性引用ActionScript文件。语法格式如下:例如:(2)使用import语句引入ActionScript类。 如果.as文件中定义的是一个ActionScript类,可以使用import语句引入,语法格式如下: import 类所在的包 例如,在主程序文件中引入Circle类,可以使用如下代码:,2.1

6、.3 使用ActionScript 控制MXML标签,例如,MXML中使用标签定义按钮,而ActionScript中可以使用Button类定义按钮;标签可以使用Label属性定义按钮的文本,而ActionScript中使用Button类的Label属性定义按钮文本。示例代码。 执行结果如图2.4所示。,2.2 基本语言元素,2.2.1 语法规则 ActionScript 3.0中有一些需要遵循的语法规则,主要包含以下几点。 (1)大小写。 (2)分号。 (3)注释。 (4)关键字和保留字。 (5)点。点操作符提供进入一个对象的属性和方法的路径。,2.2.1 语法规则,表2.1列出了Action

7、Script 3.0的词汇关键字。,2.2.1 语法规则,表2.2列出了ActionScript 3.0的句法关键字。,标识符是供ActionScript 3.0将来使用的保留字,建议不要使用这些标识符,如表2.3所示。,2.2.2 数据类型,1基元数据类型 (1)Boolean。Boolean数据类型为逻辑数据类型,包含true和false两个值。 (2)int。int数据类型在内部存储为32位整数,包含的整数集介于-2,147,483,648(-231) 2,147,483,647(231 1)之间(包含两端)。 (3)Number。Number数据类型可以表示整数、无符号整数和浮点数。

8、(4)uint。uint 数据类型在内部存储为32位无符号整数,包含的整数集介于0和 4,294,967,295 (232 -1)之间(包括 0 和 4,294,967,295)。 (5)String。String数据类型表示一个16位字符的序列。 (6)Null。Null数据类型仅包含一个值,即null。 (7)void。void数据类型仅包含一个undefined值。,2.2.2 数据类型,2复杂数据类型 (1)Object。Object数据类型是由Object类定义的。Object类用做ActionScript中的所有类定义的基类。 (2)Array。 可以使用以下四种方式声明Array

9、数组: var 变量名:Array=new Array(); var 变量名:Array=new Array(数组长度); var 变量名:Array=new Array(元素1,元素2); var 变量名:Array=元素1,元素2; (3)Date。 可以使用如下方式创建时间对象: var now:Date = new Date(); (4)Error。Error类可用于引发异常,它是ECMAScript中所定义的其他异常类的基类。 (5)Function。 (6)RegExp。 (7)XML和XMLList。,2.2.3 变量和常量,1变量 (1)变量的声明。 要声明一个变量,必须使用v

10、ar关键字。例如,下面的ActionScript语句声明一个名为i的变量: var i; (2)变量赋值。 可以使用赋值运算符(=)为变量赋值。例如,声明一个Number类型变量i 并将值20.8赋给它,代码如下所示: var i:Number; i = 20.8;,2.2.3 变量和常量,2变量的作用域 变量的“作用域”是指可以访问变量的代码区域。 例如,下面的代码声明一个全局变量: var str:String = “This is Global String!“; function pri() trace(str); /全局变量 pri(); trace(str); /全局变量 3常量

11、常量也是一个名称,表示计算机内存中具有指定数据类型的值,就这一点而言,常量与变量极为相似。,2.2.4 类型转换,1自动转换 自动转换遵循以下三点规则。 (1)如参与运算的变量类型不同,则先转换成同一类型,然后进行运算。 (2)转换按数据长度增加的方向进行,以保证精度不降低。例如,当int型和Number型运算时,先把int转成Number后再进行计算。 (3)在赋值运算中,当两边的数据类型不同时,将赋值符号右边的类型转换成左边的类型。如果右边的数据类型长度比左边长,将丢失一部分数据。 例如: var PI:Number=3.1415 var s:int,r:int=5; s=r*r*PI;,

12、2.2.4 类型转换,2强制转换 表2.4、表2.5和表2.6列出了不同数据类型之间的转换结果。,2.3 运算符和表达式,2.3.1 表达式 表达式是由常量、变量、函数和运算符按照一定的语法规则组成的序列。每个表达式都有一个值及其类型。表达式求值按照运算符的优先级和结合性规定的顺序进行。例如,以下表达式所示: x、x+y、x*y、x/y、x%y、(x+y)*(x-y)、“x“ + “y“,2.3.2 运算符,运算符按照操作数的个数可以分为一元运算符、二元运算符和三元运算符。 一元运算符:具有一个操作数,如递增运算符(+)和递减运算符(-)。 二元运算符:具有两个操作数,如+、-、*、/、%。

13、三元运算符:具有三个操作数,如?:。 运算符按照其功能的不同分为以下7类。 算术运算符:如+、-、*、/、%、+、-。 逻辑运算符:如!、&、|。 比较运算符:如、=、= =、!=。 条件运算符:如?:。 位运算符:如、& 、|、。 赋值运算符:如=、+=、-=。 其他运算符:下标运算符、分量运算符。,2.3.3 算术运算符,1一元运算符 如“+x”表示x的值先加1,然后返回x。“x+”表示先返回x,然后x的值加1。前减和后减的原理与加法类似。例如: var x:Number = 0; trace(+x); /输出1 trace(x); /输出1 trace(x+); /输出1 trace(x

14、); /输出22二元运算符 (1)加法运算符“+”为双目运算符,表示两个操作数相加。 (2)减法运算符“-”为双目运算符,表示两个操作数相减,“-”也可以作为负值运算符,此时为单目运算符,如“-5”。 (3)乘法运算符“*”表示两个操作数相乘。 (4)除法运算符“/”表示两个操作数相除,若参与运算的操作数都为整型,则结果也为整型。若其中有一个为实型,则结果为实型。 (5)求余运算符“%”表示两个操作数相除求余数。,2.3.4 逻辑运算符,(1)非运算符“!”为单目运算符,具有右结合性。参与运算的操作数为true时,结果为false;操作数为false时,结果为true。例如: trace(!(

15、10); /输出false 由于1 0为true,则非运算后的结果为false。 (2)与运算符“ /输出false,2.3.5 比较运算符,比较运算符用于对两个值进行比较。比较运算符包括“”(大于)、“=”(大于等于)、“2); /输出和false trace(1=2); /输出false trace(1=2); /输出true,2.3.6 条件运算符,条件运算符“?:”是三元运算符,用于条件求值。格式如下所示:? : 第一个操作数必须是布尔表达式,其含义是当布尔表达式为真时,整个表达式取表达式1的值,否则取表达式2的值。例如: trace(12?3:4); /输出3,2.3.7 位运算符,

16、(1)位与“&”运算符是双目运算符,其功能是把参与运算的两个数各自对应的二进位相与,只有对应的两个二进位均为1时,结果才为1,否则为0。参与运算的两个数以补码形式出现。例如,9&5的算式如下: 00001001 (9的二进制补码) &00000101 (5的二进制补码) 00000001 (1的二进制补码) (2)位或“|”运算符是双目运算符,把参与运算的两个数各自对应的二进制位相或。 (3)位非“”运算符为单目运算符,对参与运算的数的各个二进制位按位求反。 (4)位异或“”运算符是双目运算符,把参与运算的两个数所对应二进制位相异或。 (5)左移“”运算符是双目运算符,把“”运算符左边的数的二

17、进制位全部右移若干位。,2.3.8 赋值运算符,(1)简单赋值运算符“=”是最常用的一个运算符。 (2)复合算数赋值运算符包括+=、-=、*=、/=和%=。算数赋值运算符和算数运算符是一一对应的关系,它们和赋值运算符一样,运算符左边必须为变量。 (3)复合位运算赋值运算符包括&=、|=、=、=、=。,2.3.9 其他运算符,(1)下标运算符“ ”是数组中用于取得数组元素的运算符,例如: var arr:Array = “a“, “b“; trace(arr0); /输出a (2)分量运算符“.”用于获得属性和方法,例如: var arr:Array = “a“, “b“; trace(arr.

18、length); /输出2,2.4 流程控制,2.4.1 条件控制语句 1ifelse语句 (1)if语句。 if语句只用一个if条件当做单纯的判断,语法格式如下: if (condition) /语句块 其中condition为判断的条件表达式,表达式返回值为布尔型。如果表达式返回true,则执行花括号“”中的ActionScript语句块;如果表达式返回false,则跳过这段代码。例如: if(21) /判断2是否大于1 trace(“21“); /输出“21” ,2.4.1 条件控制语句,(2)ifelse语句。 if语句在结构上有一个缺陷,就是如果不满足条件,那么不会做任何处理,也不会

19、返回任何结果。在后面加上一个else条件则可以避免这个问题,语法格式如下: if (condition) /代码段1 else /代码段2 ,2.4.1 条件控制语句,(3)ifelse ifelse语句。 当需要判断的条件不止一个时,不能只使用一个if条件做判断,例如判断一个数等于不同值的情况,这时可以在中间加上else if判断,语法格式如下: if(condition1) /代码段1 else if(condition2) /代码段2 else /代码段n ,2.4.1 条件控制语句,2swith语句 switch语句非常类似于if语句,因为它也是根据条件选择性地执行某段程序代码块。 如

20、同ifelse ifelse语句一样。语法格式如下: switch(expr) case expr 1:/代码段1break;case expr 2:/代码段2break;default:/代码段n ,2.4.1 条件控制语句,程序中break语句的作用是跳出程序,使程序停止运行。例如: import mx.controls.Alert; var date:Date = new Date(); var d:Number = date.getDay(); /获取当前的星期数 var result:String = null ; switch(d) case 1:result=“星期一“; bre

21、ak;case 2:result=“星期二“; break;case 3:result=“星期三“; break;case 4:result=“星期四“; break;case 5:result=“星期五“; break;case 6:result=“星期六“; break;case 0:result=“星期日“; break;default:result=“出错了!“; break ; Alert.show(result);,2.4.2 循环控制语句,1for循环 for语句的格式如下: for(表达式1; 表达式2; 表达式3) /代码段 表达式1在循环开始前无条件求值一次,这里通常设置一

22、个初始值。表达式2是一个条件,在循环开始前首先测试表达式2的值。如果表达式2的值为false则结束循环,如果为true则执行代码段中的语句,循环执行完一次后执行表达式3。执行完表达式3之后继续判断表达式2的值,如果为true则继续循环,如果为false则结束循环。,2.4.2 循环控制语句,2forin循环 forin循环用于遍历对象的属性或数组中的元素。语法格式如下: for(expr in object) /代码段 object表示要遍历的集合。在循环开始前,当前数组的键名或对象的成员名将赋给变量expr。在每次循环中,数组的指针或对象的键名将移动到下一个单元,直到遍历完所有的单元。 例如

23、,以下程序将遍历一个数组的所有元素。 var myArray:Array = “一“, “二“, “三“; for (var i:String in myArray) trace(“myArray“+i+“:“ +myArrayi); ,2.4.2 循环控制语句,3for eachin循环 for eachin语句用于循环访问集合中的项,这些项可以是XML或XMLList对象中的标签,以及对象属性保存的值或数组元素。与forin循环不同的是,for eachin循环中的迭代变量只包含属性所保存的值,而不包含属性的名称。例如: var myObj:Object = a:2, y:3; for e

24、ach (var field:Int in myObj) trace(field); ,2.4.2 循环控制语句,4while循环 while循环表示只要满足条件,就会反复执行循环体,语法格式如下: while(condition) /代码段 其中,condition为判断的条件表达式。当表达式的值为true时就运行代码段中的语句,同时改变表达式的值。语句运行一遍后,再次检查表达式的值,如果为true则再次进入循环,直到值为false时就停止循环。如果表达式的值永远都是true,则循环将一直进行下去,成为死循环。如果表达式的值一开始就为false,则循环一次都不会运行。,2.4.2 循环控制语

25、句,5dowhile循环 dowhile语句也是一种while循环语句。与while循环语句不同的是,dowhile循环首先执行循环内的代码,而不管while语句表达式的条件是否成立。程序执行一次后,dowhile循环才检查表达式中的值是否为true,值为true则继续循环,为false则停止循环。 例如,以下代码为dowhile 循环的一个简单示例,该示例在条件不满足时也会输出结果,如下所示: var i:int = 10; do trace(i);i+; while (i 10); /输出10,2.4.3 流程控制符,1break语句 break语句可以结束当前for、forin、for

26、eachin、while、dowhile或switch结构的执行。当程序执行到break控制符时,程序就立即结束当前循环。例如: var i:int = 1; while(i3)break; /当i3时结束while循环trace(i); /输出1,2,3i+; /I加1 ,2.4.3 流程控制符,2continue语句 continue语句用于结束本次循环剩余的代码,并在条件值为true时开始执行下一次循环。例如: var i:int ; for(i=0;i10;i+) if(i = 5) continue ;trace(i); /输出012346789 ,2.4.4 应用实例:回答多项选择

27、题,右击已经新建的Flex工程,选择“新建”菜单下的“MXML应用程序”子菜单项,新建一个answer.mxml文件。在设计模式下拖曳四个“CheckBox”控件。id分别设为A、B、C和D。标签文本设为:Flex、Flash、ASP、Ajax。再拖曳一个Label标签和一个Button控件,在answer.mxml编写ActionScript代码。程序的所有代码所示。 以上程序中定义了一个数组selArr,用于存放用户选择的复选框中的值。使用数组的push方法,将选中复选框中的Label的值添加到数组中。遍历数组,查看答案是否正确。运行结果如图2.5所示。,2.5 函数,2.5.1 函数的定

28、义 1使用function关键字声明函数 函数语句以function关键字开头,语法格式如下: function 函数名(参数1:类型, 参数2:类型,参数n:类型):返回值类型 /函数体 函数名可以是任何的ActionScript标识符,括号内定义函数的参数,参数之间使用逗号分隔。如果不带参数,则称为无参函数,但也必须包含括号“()”。函数体中定义在调用函数时执行的代码,这段代码可以包括变量、表达式和流程控制语句等,甚至可以是其他的函数或类定义。返回值类型指定了函数返回值的类型,返回值使用return语句返回。,2.5.1 函数的定义,2使用匿名函数方式声明函数 匿名函数定义的方式是将一段“

29、函数文本”存储在一个变量中,函数文本中没有名称,所以称为匿名函数。语法格式如下: var 函数名:Funtion = function(参数1:类型, 参数2:类型, ,参数n:类型):返回值类型 /函数体 例如,使用匿名函数方式定义函数customFunc,代码如下所示: var customFunc:Fuction=function(str:String):String return “Hello “+str ; ,2.5.2 函数的参数,1参数传递 (1)按值传递,意味着将参数的值复制到局部变量中以便在函数内使用。 (2)按引用传递,意味着只传递对参数的引用,而不传递实际值。 例如: v

30、ar n:int=0; function add(i:int):void i+; trace(n); /输出0 add(n); trace(n); /输出0 下面是一个引用传递的例子: var obj:Object=i:0; function add(o:Object):void o.i+; trace(obj.i); /输出0 add(obj); trace(obj.i); /输出1,2.5.2 函数的参数,2默认参数值 指定为默认值的值必须是编译时的常量。如果某个参数存在默认值,则会有效地使该参数成为“可选参数”。没有默认值的参数被视为“必需的参数”。在定义参数时使用赋值运算符“=”即可为

31、参数设置默认值。例如: function print(i:int, j:int=2):void trace(i, j); print(1); /输出12,2.5.2 函数的参数,3arguments 对象 arguments对象是一个数组,其中包括传递给函数的所有参数。例如,arguments0存储第1个参数,arguments1存储第2个参数。arguments.length属性作用是报告传递给函数的参数数量。arguments.callee方法作用是提供对函数本身的引用,该引用可用于递归调用函数表达式。例如: function print(i:int):void trace(argumen

32、ts0); print(10); /输出10,2.5.2 函数的参数,下面的例子是使用arguments.callee属性递归求自然数的阶乘: var factorial:Function = function (x:uint):int if(x = 0)return 1;elsereturn (x * arguments.callee(x - 1); trace(factorial(5); /输出120,2.5.2 函数的参数,.(rest) 参数可指定一个数组参数用于接受任意多个以逗号分隔的参数。只要定义了该参数,就可以接受任意多的参数。这些参数以数组的形式保存在(rest)参数中,res

33、t只是推荐使用的名称,也可以使用其他的名称,如aps。(rest)参数声明必须是参数列表中的最后一个参数。(rest)参数提供了与arguments数组和arguments.length属性相同的功能,但是它不提供与arguments.callee类似的功能。例如: function traceArr(x:int, .args):void /参数数组的名称设置为args for (var i:uint = 0; i args.length; i+)trace(argsi); traceArr(1, 2, 3);,2.5.3 函数的作用域,函数的范围不仅决定了可以在程序中的什么位置调用函数,还决

34、定了函数可以访问哪些定义。适用于变量标识符的作用域规则同样也适用于函数标识符。在全局作用域中声明的函数在整个代码中都可用。,2.5.4 函数的返回值,在声明函数时,如函数代码中使用return语句,则可以立即结束函数的运行,程序返回到调用该函数的下一条语句。例如: function my_function(a:int=1):void trace(a);return; /结束函数的运行,下面的语句将不被运行a+;trace(a); my_function(); /输出1 中断函数执行并不是return语句最常用的功能,许多函数通过使用return语句返回一个值与调用它们的代码进行交互。函数的返回

35、值可以是任何类型的值,包括列表和对象。例如: function squre(num:Number):Number return num*num; /返回一个数的平方 trace(squre(4); /输出16,2.5.5 函数的调用,函数在调用时需要提供有效的参数,在ActionScript 3.0中调用函数的格式如下: 函数名(实参1,实参2,实参n); 实参可以是常量、变量、其他构造类型数据或表达式,各个参数之间用逗号分隔。调用无参函数时不需要指定实参,实参的使用顺序必须与定义函数时的形参一致。例如: function myfunc(a:int,b:int):void trace(a+b)

36、; var a:int=3; myfunc(a,5); /输出8,2.5.6 递归函数,一个函数在它的函数体中调用其自身则称这个函数为递归函数。在执行递归函数的调用过程中,函数将反复调用自身,每调用一次就进入新的一层调用。例如,计算一个数的阶乘,可以定义以下函数: function factorial(n:Number):Number if(n=0)return 1; /如果n为0则返回1elsereturn n*factorial(n-1); /递归调用,直到n等于0为止 trace(factorial(10); /输出3628800,2.5.7 全局函数,1判断函数 (1)isNaN()函

37、数。用于判断某个值是否为非数字。 (2)isFinite()函数。用于判断某个数值是否为有限数。 (3)isXMLName()函数。用于判断指定字符串对于XML元素或属性是否为有效名称。,2.5.7 全局函数,2转换函数 (1)Boolean()函数。用于将一个表达式转换为布尔值并返回该值。 (2)Number()、int()和uint()函数。用于将一个给定数值分别转换成Number、int和uint类型的数值,并返回转换后的数值。 (3)String()函数。用于将表达式转换成字符串形式,各种类型数据及转换后的结果如表2.6所示。 (4)Array()函数、Date()函数和Object(

38、)函数。 通常用于创建一个新数组。 Date()函数用于返回当前星期值、日期值、时间和时区的字符串表示形式。 每个值都是一个对象,这意味着对某个值调用Object()函数后会返回该值。 (5)XML()和XMLList()函数。分别用于将表达式转换成XML对象和XMLList对象。 (6)parseFloat()函数。用于将字符串转换为浮点数。此函数读取或分析并返回字符串中的数字,直到此函数遇到不是数字的字符。 (7)parseInt()函数。用于将字符串转换成整数。如果指定的字符串不能转换成整数,则此函数返回NaN。以 0x 开头的字符串被解释为十六进制数字。,2.5.7 全局函数,3转义操

39、作函数 (1)escape()和unescape()函数。 主要用于将参数转换为字符串,并以URL编码格式对其进行编码。在这种格式中,大多数非字母数字的字符都替换为十六进制序列。 (2)encodeURI()和decodeURI()函数。 encodeURI()函数将字符串编码为有效的URI(统一资源标识符)。decodeURI()函数则将已编码的URI解码为字符串。 (3)encodeURIComponent()和decodeURIComponent()函数。 encodeURIComponent()函数将字符串编码为有效的URI组件。encodeURIComponent() 函数与enco

40、deURI()函数不同,它仅适用于URI字符串的一部分(称为URI组件)。URI组件是指出现在某些特殊字符之间的任何文本,这些特殊字符称为组件分隔符(如:、/、;、?)。 dncodeURIComponent()函数则用于将已编码的URI组件解码为字符串。,2.5.8 应用实例:设计一个计算器程序,新建一个MXML应用程序命名为Calculator.mxml。在设计模式中为应用程序设计界面。拖曳一个Panel容器,在容器中设置三个TextInput文本框控件,一个DropDownList下拉框控件,一个按钮控件,以及一个Label控件。设计出的效果如图2.6所示。,2.5.8 应用实例:设计一

41、个计算器程序,将标签的createComplete事件设置为init(),在初始化文件时运行该函数。将标签的click事件设为do_btn(),在单击该按钮时运行函数。界面完成后的代码如下所示:,2.5.8 应用实例:设计一个计算器程序,在和标签之间插入ActionScript代码,定义init()初始化函数,在下拉框控件中初始化“+”、“-”、“*”和“/”。定义cac函数,参数为用户输入的两个数和选择的计算选项,返回两个数计算的结果。定义do_btn()函数,得到用户输入的数值,调用cac函数得到计算结果,并将结果在“结果”文本框中显示。代码所示。 程序的运行结果如图2.7所示。,2.6

42、面向对象编程,2.6.1 面向对象程序设计基本概念 1封装 封装是将数据和代码捆绑到一起,避免外界的干扰和不确定性。 2继承 类提供了创建新类的方法,再借助继承这一重要机制扩充了类的定义,实现了面向对象的优越性。 3多态 不同的类对于不同的操作具有不同的行为称为多态。,2.6.2 类的定义,类的一般定义形式如下所示: class 类名 /声明属性/声明方法 例如,以下是一个简单的类定义: public class MyClass /属性public var i:int=5;/方法public function add():voidtrace(“类的方法“); ,2.6.3 类的实例化和访问,例

43、如,要创建之前定义的MyClass类的一个实例,可以使用如下语句:在对象被创建之后,可以在程序中对该对象的属性和方法进行访问。访问的方法是在对象后面使用点运算符(.)加上要访问的属性和方法。例如,已创建了对象“obj”,类中已有属性“stunumber”,要访问该属性可以使用“obj.stunumber”。,2.6.3 类的实例化和访问,例如,访问MyClass类的属性和方法如下所示:,2.6.4 类的访问控制,ActionScript 3.0的访问修饰符有internal、public、private和protected四种。 (1)internal:表示在同一类内都可以访问。 (2)pub

44、lic:声明为公用的属性和方法。 (3)private:声明为私有的属性和方法。 (4)protected:声明为被保护的属性和方法。,2.6.4 类的访问控制,例如,定义一个学生类Student如下所示: public class Student private var num:String= “101101“;public var name:String= “王林“;public function Stuinfo():voidtrace(“学生信息“); 在Flex应用程序中访问该类如下所示: var stu:Student = new Student(); trace(stu.name)

45、; stu.Stuinfo(); trace(stu.num); /本语句出错,访问权限不够,2.6.5 静态属性和方法,定义静态属性和方法时,static关键字应该加在访问修饰符之后,例如:public class Student public static var name:String= “王林“;static function showname()name= “张强“;trace(name); ,2.6.6 构造函数和析构函数,1构造函数 构造函数定义时,名称一定要与类名相同。构造函数的定义形式如下所示: public function 类名() ,2.6.6 构造函数和析构函数,构造

46、函数只能使用public进行访问控制,无返回值,不能声明返回类型。例如: public class Student private var num:String;private var name:String;/构造函数public function Student()trace(“执行构造函数“);num=“101101“;name=“王林“;public function showstu():voidtrace(num);trace(name); ,2.6.6 构造函数和析构函数,创建类的实例并访问成员数据如下: var stu:Student=new Student(); stu.sho

47、wstu(); 输出结果如下: 执行构造函数 101101 王林,2.6.6 构造函数和析构函数,2析构函数 析构函数是在类的对象被销毁时自动执行的,主要用于释放对象占用的内存空间。析构函数的名称也与类型相同,只不过要在函数名前加一个“”符号。语法格式如下: public function 类名() 析构函数不带任何参数,也没有返回值。一个类中只能有一个析构函数。,2.6.7 getter和setter方法,1getter方法 getter方法用于访问属性的值,一般使用get关键字定义getter方法,语法格式如下:访问修饰符 function get 方法名():返回类型 /其他代码retu

48、rn 属性名; getter方法不需要定义参数,返回类型要和私有属性的类型相同。方法的定义中必须要有一个return语句用于返回要访问的属性。在类外部使用对象名加点运算符(.)加方法名即可得到类的属性值。,2.6.7 getter和setter方法,2setter方法 setter方法用于设置属性的值,一般使用set关键字定义,语法格式如下: 访问修饰符 function set 方法名(参数名:参数类型):void /其他代码属性名=参数名; setter方法中必须要有参数,参数类型要和访问的属性类型相同,返回类型为void,方法中必须要有给属性赋值的赋值语句。在类外部使用setter方法为

49、属性赋值,格式如下: 类名.方法名=属性值;,2.6.8 类的继承,可以使用extends关键字指明类与类之间的继承关系,定义子类的语法格式如下: public class 子类名 extends 父类名 /声明子类的属性和方法 创建的子类包括父类成员和其新增加的成员如下所示。 新建包com中的A.as文件,定义父类A如下所示: package com public class Apublic var a_str1:String;private var a_str2:String=“string2“;protected var a_str3:String=“string3“;public function a_fun():voida_str1= “string1“; ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报