AS3.0从入门到精通.doc
20页AS3.0程序设计1. 逻辑运算1.1. 程序设计中需进行逻辑运算(布尔运算)2. 程序的3种结构2.1. 顺序结构条件真假2.2. 选择结构1.2.1.3.1.4.2.3. 循环结构条件1.5.3. 选择程序结构3.1. if…else 条件语句if(表达式){语句1}else{语句2}3.2. if…else if..else语句if(表达式1){语句1}else if(表达式2){语句2}else if(表达式3){语句3}….else if (表达式n){语句n}else{语句m}3.3. switch语句switch (表达式){ case 1 : 程序语句1; break; case 2 : 程序语句2; break; break; case 3 : 程序语句3; break; default : 默认执行程序语句;}² 表达式:结果是一个值case: case表达式与switch的表达式参数匹配,执行该语句² break:执行相应语句后,跳出switch² default: case表达式与switch表达式不匹配时,执行这该语句4. 循环程序结构由循环体和控制条件两部分组成,2种类型,一种是先判断条件,再执行语句,另一种是先执行语句,再判断条件4.1. for循环语句for(初始化;循环条件;步进语句){ 循环执行语句}² 初始化:对变量初始化² 循环条件:逻辑表达式,如结果为false退出循环,否则继续执行语句² 步进语句:改变变量的值4.2. while循环语句while (循环条件){ 循环执行语句;}² 循环条件:逻辑表达式,若为true,继续执行代码,否则退出循环4.3. do…while语句do{ 循环执行语句;} while (循环条件);² 先执行语句,后判断条件4.4. for..in 和for each..in语句1.6.4.5. 循环嵌套for(初始化;循环条件;步进语句){ (初始化;循环条件;步进语句){ 循环执行语句 }}4.6. 循环流程控制语句使用break和continue控制循环流程break:直接跳出循环,不再执行后面的语句continue:停止当前这一轮循环,直接跳到下一轮循环,当前contunue中后面的语句不再执行。
避免杂乱代码;重复利用,提高效率函数1. 定义函数1.1. 函数语句定义法function 函数名(参数1:参数类型,参数2:参数类型...):返回类型{ //函数体}1.2. 函数表达式定义法也称函数字面值或匿名函数,在早期版本广泛使用var 函数名:function=function (参数1:参数类型,参数2:参数类型...):返回类型{ //函数体}1.3. 两种定义方法的区别和选择1.3.1. 区别Ø 作用域不同函数语句定义法可在定义前或定义后进行调用函数表达式定义法只能在定义后调用Ø this关键字指向不同函数语句定义法-当前函数作用域函数表达式定义法this指向随依附对象的不同而不同1.3.2. 选择一般使用函数语句定义法2. 调用函数2.1. 一般调用无参函数function HelloAS() { trace("欢迎走进AS3.0世界");}HelloAS();有参函数,参数有默认值,调用时不输入参数function HelloAS(str:String="AS3.0世界欢迎你!") { trace(str);}HelloAS();有参函数,参数无默认值,调用时必须输入参数,且参数类型一致function HelloAS(str:String) { trace(str);}HelloAS("AS3.0世界欢迎你!");如没指定参数的类型,输入参数类型没强制要求也可将函数赋值给变量,使用变量名调用函数function 求和(a:int,b:int){ trace(a+b)}var sum:function=求和sum(1,2)2.2. 嵌套和递归调用函数2.2.1. 嵌套调用函数用一个函数调用另一函数,即在一个函数体内定义另一函数function sum(a:String,b:Number) { function STI(c:String):int { return int(c); } function NTR(d:Number):int { return Math.round(d); } return STI(a) + NTR(b);}var a:String="10";var b:Number=5.56;trace(sum(a,b));嵌套函数可以调用与自身函数并列的函数function sum(a:String,b:Number) { return STI(a) + NTR(b);}var a:String="10";var b:Number=5.56;trace(sum(a,b));function STI(c:String):int { return int(c);}function NTR(d:Number):int { return Math.round(d);}2.2.2. 递归调用函数递归调用函数是函数调用自身函数,递归调用必须有一递归结束条件(递归出口),否则形成死循环。
function sum(n:int):int { if (n==1) { return 1; } else { return n + sum(n - 1); }}trace(sum(1000));3. 函数返回值3.1. return 语句3.2. return 语句return 返回值;返回值可以是数值、字符串、对象(数组、影片剪辑等)function 圆面积(r:Number):Number { var s:Number=Math.PI*r*r; return s;}trace(圆面积(5));返回值也可以是表达式function 圆面积(r:Number):Number { return Math.PI * r * r;}trace(圆面积(5));可以有多个语句,函数执行了语句后,就跳出函数体function 选择输入(x:Number):Number { if (x>0) { return 1; } else if (x<0) { return -1; } else { return 0; }}trace(选择输入(10));语句的返回值可以是空“undefined”function 输出测试() { return;}trace(输出测试());3.3. 返回值类型返回值类型在函数定义中是可选参数,如未定义,返回值类型由return语句返回值的数据类型来定。
function 测试类型() { var a:String="这是一个字符串"; return a;}trace(typeof(测试类型()));如定义了返回值类型,返回的类型必须与定义类型相同如函数不需要返回值,也就不存在return语句,定义函数也不能设置返回类型function 返回测试():String { var a:String="这是一个字符串";}trace(返回测试());4. 函数参数1.1. 传递参数的语法参数位于函数格式的括号中(参数1:参数类型=默认值,参数2:参数类型=默认值)函数支持传递多个参数,定义参数时,使用半角逗号分开不同的参数function intro(username:String,age:int):void { trace("你的姓名:"+username+" 年龄是:"+age);}intro("小王",25);4.1. 传递参数的两种方法所有参数按引用传递function test(a:Number):Number { a++; return a;}var b:Number=5;trace("b引用前",+b);var c=test(b);trace("b引用后",+b);trace("c: "+c);复杂类型按引用传递,且保持这个引用function testArr(_arr:Array):void { var a:int=100; _arr.push(a);}var b:Array=[1,2,3];trace("引用前:"+b);testArr(b);trace("引用后"+b);2.4.2. 给函数设置默认参数AS3.0可给函数设置默认参数,默认参数是可选项设置了默认参数,调用函数时如没写参数,将使用函数的默认参数没有默认值的参数必须输入function Test(a:int,b:int=2,c:int=3){ trace(a,b,c)}Test(1)Test(1,4)Test(1,4,0)4.3. argumnets对象和(rest)参数AS3.0调用函数时检查参数数量的方法4.3.1. arguments对象函数中可使用对象访问有关传递给函数的参数信息,auguments对象是一个数组,arguments.length属性记录参数数量function TestArg(a:int,b:int,c:int):void { trace("输入的参数个数是:"+arguments.length); for (var i:uint=0; i function fac(i:int) { if (i==1) { return 1; } else { return i + arguments.callee(i - 1); }}trace(fac(100));4.3.2. …(rest)参数…rest参数可指定自己命名的数组来接受任意多个以逗号分隔的参数语法格式function(...args)function(参数1,参数2,...args)…(rest)参数不具有callee属性function TestArg(...args):void { trace("输入的参数个数是:"+args.length); for (var i:int=0; i





