FlashAS3.0第一讲.ppt
第一讲,Flash ActionScript 3.0语法基础,二维动画设计,概念释义,舞台(Stage)用来显示Flash元素的平台 主时间轴(MainTimeLine)用于控制Flash元素的显示,二维动画设计,概念释义,显示对象(Display Object)Flash中所有可视元素,包括图形、按钮、补间动画、文本等。容器(Container),二维动画设计,概念释义,舞台与主时间轴的包含关系,舞台,主时间轴,其他元素,二维动画设计,代码编写位置及方式,直接放在主时间轴的帧中 使用类,二维动画设计,AS3.0 语法基础数据类型,基本数据类型,复杂数据类型,二维动画设计,AS3.0语言基本元素,2、变量的声明和使用变量必须先声明再使用声明变量的语法,变量命名规则尽量使用有含义的英文单词作为变量名变量名采用骆驼式命名法尽量避免变量名中出现数字编号,var 变量名:数据类型;var 变量名:数据类型=值,如果要赋值,值的数据类型必须和变量的数据类型一致,ii=3var j=“String Value”,var i:inti=100var k:int=100,i:int=200var j:String=“String Value”,二维动画设计,AS3.0语言基本元素,3、使用const声明常量AS3中新增的关键字语法,const foo:int=100,二维动画设计,AS3.0语言基本元素,数字:int,uint,Numberint:有符号的32位整数型,数值范围:-231+(231-1)uint:没有符号的32位整数型,数值范围:0 232-1Number:64位浮点值,数值范围1.79769313486231e+308 4.960656458412467e-324,使用int,uint,Number应当注意的事项:能用整数值时优先使用int和uint整数值有正负之分时,使用int只处理正整数,优先使用uint处理和颜色相关的数值时,使用uint碰到或可能碰到小数点时使用Number整数数值运算涉及到除法,建议使用浮点值,二维动画设计,AS3.0语言基本元素字符串,字符串:String如何声明字符串?,var stringSample1:String;var stringSample2:String=“”;var stringSample3:String=new String()var stringSample4:String=“abc”var stringSample5:String=new String(“abc”)var stringSample6:String=abc,var stringLength:Number=stringSample.length;,如何知道字符串的长度?,二维动画设计,AS3.0 复杂数据类型数组,数组:Array数组最多容纳232-1个元素默认值为空值:null数组的声明方式,数组元素的访问,var a:Array=var b:Array=new Array()var c:Array=1,2,3,4var d:Array=new Array(1,2,3,4),根据元素的位置,使用数组运算符:数组名下标d0,d1,容易犯的错误:var arr:Arrayarr0=*,二维动画设计,AS3.0 复杂数据类型数组,在数组中,可以保存多个任意类型的数据。var arr:Array=new Array()arr0=1;arr1=“abc”;arr2=true;arr3=new MovieClip(),二维动画设计,数组常用函数,插入数组元素3种方法:push()在数组末尾添加一个或多个元素unshift()在数组开头插入一个或多个元素splice()用于在数组指定索引处插入或删除指定数目的元素(替换元素),二维动画设计,数组常用函数,删除数组元素3种方法:pop()从数组末尾删除一个元素unshift()从数组开头删除一个元素splice()用于在数组指定索引处插入或删除指定数目的元素(替换元素),二维动画设计,AS3.0 复杂数据类型对象,Object及关联数组Object的成员声明新Object方法,二维动画设计,AS3.0 复杂数据类型对象,Object类是所有类的父类,可以接收任何类型的数据,同时也是动态类,可以向动态类的实例添加属性。var obj:Object=new Object();obj=50;obj=;obj=x:0;obj.y=2/动态添加属性,二维动画设计,点语法,点运算符“.”访问对象的属性和方法。使用时,在对象名后加上点运算符,再跟对象的属性和方法,对象名(实例名).属性(方法)/声明一个Number数据类型变量n,并赋予值10var n:Number=10;/输出n的16进制字符串表示形式trace(n.toString(16);parseInt()函数点语法还可以表示包的嵌套关系。,二维动画设计,点语法,点语法可以用数组运算符代替,访问实例的属性和方法也可以使用数组运算符。访问规则:把属性名或方法作为字符串放在数组运算符中。有时点语法不能很好工作时,亦可用数组运算符代替。,二维动画设计,ActionScript 3语言基本元素,运算符、表达式及运用算数运算符:+,-,*,/,%,求反算数赋值运算符:+=,-=,*=,/=,%=关系运算符(判断相等关系):=,!=,=,!=关系运算符(判断大小关系):=,逻辑运算符:&,|,!三元if-else运算符:?:typeof(用字符串形式返回对象的类型)is(判断一个对象是否属于一种类型,返回布尔值)as(如果一个对象属于一种类型,则返回这个对象,否则返回null)优先级顺序:使用括号代替记忆,二维动画设计,ActionScript 3 流程控制,条件判断功能:当程序执行到“if”语句时,首先判断参数“条件”中逻辑表达式的运算结果,如果结果为“真”(true)则执行当前“if”语句内的脚本语句,如果结果为“假”(false),则检查当前“if”语句中是否有“else”或者“else if”子句,如果有则继续进行判断,如果没有则跳过当前“if”语句内的所有程序代码,继续执行下面的程序。,二维动画设计,ActionScript 3 流程控制,三种格式:格式1:如果条件表达式为true(真),执行流程语句;如果为假(false),不执行流程语句 if(条件表达式)流程 格式2:如果条件表达式为true(真),执行流程a;如果为假(false),执行流程b if(条件表达式)流程a else 流程b,二维动画设计,ActionScript 3 流程控制,var foo:int=10;var bar:int=5;if(foobar)trace(“Foo is winner!”)else trace(“Bar is winner!”),二维动画设计,ActionScript 3 流程控制,三种格式格式3:if(条件表达式1)流程1;/如果条件表达式1成立则执行流程1 else if(条件表达式2)流程2;/如果条件表达式2成立则执行流程2 else if(条件表达式3)流程3;/如果条件表达式3成立则执行流程3 else if/else if语句可以一直写下去,用以判断多种情况。,二维动画设计,ActionScript 3 流程控制,var foo:int=500;if(foo 0)trace(“foo 是一个正整数”)else if(foo 100)trace(“foo 是一个大于100的正整数”)elsetrace(“foo 小于0”),输出:,foo 是一个正整数,var foo:int=500;if(foo 100)trace(“foo 是一个大于100的正整数”)else if(foo 0)trace(“foo 是一个正整数”)elsetrace(“foo 小于0”),二维动画设计,ActionScript 3 流程控制,范例:重复左右移动的飞鸟X方向位置不断改变到达边缘后反向小鸟影片剪辑添加监听事件,二维动画设计,ActionScript 3 流程控制,循环语句:while,do-while,for,forin,for eachin,设计步骤:确定循环内容(循环体)确定循环变量循环三要素:循环初始化 循环条件表达式 循环体中必须有改变循环变量值的语句,二维动画设计,ActionScript 3 流程控制,while循环控制语句 功能:当满足条件表达式的时候,再执行循环体。while(循环条件)循环体;,do 循环体;while(循环条件)不管“条件”成立与否、循环与否,循环体至少都要执行1次。,二维动画设计,ActionScript 3 流程控制,范例(while):在舞台复制出10个小鸟,而且水平位置、垂直位置、水平缩放比例、垂直缩放比例和透明度都是随机变化的。范例(dowhile):根据用户指定的数量加入对象,随机数的使用,二维动画设计,ActionScript 3 流程控制,循环语句For循环控制语句 功能:让指定程序代码块执行一定次数的循环。格式:for(初始化;循环条件;步进)循环体;,二维动画设计,ActionScript 3 流程控制,范例:复制小鸟范例:数的累加,var sum=0;for(var i=1;i=100;i+)sum=sum+i;trace(sum),二维动画设计,forin循环句,forin循环主要用于在对象或数组中循环访问属性或数组对象。其语法结构如下。在执行时,变量i将用于代表对象object中的每一个属性,直到“遍历”对象的全部属性之后,循环才会结束。,二维动画设计,forin循环句,上例输出结果为:company name age。可以看到可以通过循环访问预先定义的对象obj的每个属性。其属性值则可以使用obji来获得。上述代码的输出结果为:company:Adobename:张三age:25,二维动画设计,for eachin循环句,与forin循环类似,for eachin也是一种遍历方式。不过forin遍历的是属性,而for eachin遍历的是属性值。例如,对象x=4,y=5包含2个属性(x和y),forin遍历的结果是x和y(属性名称),而for eachin遍历的结果则是4和5(属性的值)。for eachin循环句的语法如下。,二维动画设计,for eachin循环句,对比可以发现,forin循环中使用的变量i定义为字符串类型,这是因为属性名称肯定是字符串;而在for eachin的遍历过程中,由于属性值不确定(可能是Number、Boolean、String或者更复杂的变量类型),因此i的数据类型也并不确定,使用“*”(星号)注明其类型不确定。上述代码的输出结果为:Adobe 张三 25注意:与在forin例子中,使用obji访问的结果相同。,二维动画设计,ActionScript 3 流程控制,with语句如果有一系列语句都作用于同一对象上,则可以使用with语句一次指定全部语句对该对象的参考使用with语句可以提高程序的执行速度,并且可以避免重复输入对象名称的问题。,with(mymc)alpha=0.2x=200y=200,mymc.alpha=20mymc.x=200mymc.y=200,=,二维动画设计,ActionScript 3 流程控制,break和continue语句都在循环体内使用;Break用来直接跳出循环,不再执行循环体内后面的语句。continue语句只是终止当前这一轮的循环,直接跳到下一轮循环,而在这一轮循环中,循环体内continue后面的语句也不会执行。,for(var i:int=0;i5;i+)if(i=3)break;trace(当前数字:+i);,for(var i:int=0;i5;i+)if(i=3)continue;trace(当前数字:+i);,二维动画设计,ActionScript 3 流程控制,选择分支判断switch,switch(值或表达式)case 值或表达式1:语句1;break;case 值或表达式2:语句2;break;case 值或表达式3:语句3;break;defalt:语句4;,二维动画设计,ActionScript 3 流程控制,var fruits:Array=apple,banana,grape,watermelon,mango;var currentFruit:String=fruitsMath.floor(Math.random()*fruits.length);trace(the fruit you selected is:+currentFruit);switch(currentFruit)case apple:trace(apple,apple,please pay for apple!);break;case mango:trace(mango,mango,please pay for mango!);break;default:trace(0,you have a free chance to eat:+currentFruit);,switch(currentFruit)case apple:trace(o,o,its an apple!);case mango:trace(eat for free!);break;case banana:case grape:trace(please pay for it!);break;default:trace(o,I wont buy watermelon);,二维动画设计,ActionScript 3中的函数,函数:执行特定任务并可以在程序中重用的代码块。两类:方法;函数闭包两种定义方式:函数语句声明法;函数表达式声明法,二维动画设计,ActionScript 3中的函数,参数:按值传入参数:按引用来传入参数:Action Script3中,所有的参数都是按引用传入的。基元数据类型是不变对象,传引用和传值的效果一样。,二维动画设计,ActionScript 3中的函数,范例:,function test(valuePara:int,referencePara:Array):voidvaluePara=100;referencePara.Push(100);var a:int=5var b:Array=1,2,3;test(a,b);trace(a);trace(b);,输出:5,输出:1,2,3,100,二维动画设计,ActionScript 3中的函数,设置默认参数:调用函数时,没有写明参数,会调用该参数默认值代替。格式:function(参数1:类型=默认值,参数2:类型=默认值):返回类型例子:,function test(a:int=3,b:int=2,c:int=1):voidtrace(a+b+c,a,b,c);test()test(9)test(2,9)test(1,2,3),6,3,2,112,9,2,112,2,9,16,1,2,3,二维动画设计,ActionScript 3中的函数,在函数中传入的参数都被保留在函数自动生成的一个arguments对象中。可以使用arguments0、arguments1访问传入的第1个、第2个参数,依次类推。属性length表示当前传入参数的数目属性callee持有指向当前函数的引用,常常用来创建递归。,二维动画设计,ActionScript 3中的函数,范例:,function test(a:int=3,b:int=2,c:int=1):voidtrace(“参数长度:”+arguments.length);trace(a+b+c);if(a+b+c0)arguments.callee(a-1,b-1,c-1);test();,