AS3.0从入门到精通_第1页
AS3.0从入门到精通_第2页
AS3.0从入门到精通_第3页
AS3.0从入门到精通_第4页
AS3.0从入门到精通_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档AS3.0程序设计1 .逻辑运算1.1. 程序设计中需进行逻辑运算(布尔运算)2 .程序的3种结构2.1. 顺序结构2.3. 循环结构1.5.3 .选择程序结构3.1. ifels磔件语句if(表达式)语句1 else 语句23.2. if else if.else语句if(表达式1)语句1else if(表达式 2)语句2else if(表达式 3)语句3else if (表达式 n)语句nelse语句m3.3. switch 语句switch (表达式)case 1 :程序语句1;break;case 2 :程序语句2;break;break;case 3 :程序语句3;break

2、;default :默认执行程序语句表达式:结果是一个值case: case表达式与switch的表达式参数匹配,执行该语句break :执行相应语句后,跳出 switchdefault: case表达式与switch表达式不匹配时,执行这该语句4 .循环程序结构由循环体和控制条件两部分组成,2种类型,一种是先判断条件,再执行语句,另一种是先执行语句,再判断条件for(初始化;循环条件;步进语句)循环执行语句初始化:对变量初始化循环条件:逻辑表达式,如结果为 false退出循环,否则继续执行语句 步进语句:改变变量的值4.1. while循环语句while (循环条件)循环执行语句;循环条件:

3、逻辑表达式,若为 true,继续执行代码,否则退出循环4.2. do while 语句do循环执行语句; while (循环条件);先执行语句,后判断条件4.3. for.in 和 for each.in 语句1.6.4.4. 循环嵌套for(初始化;循环条件;步进语句)(初始化;循环条件;步进语句) 循环执行语句4.5. 循环流程控制语句使用break和continue控制循环流程break:直接跳出循环,不再执行后面的语句continue :停止当前这一轮循环,直接跳到下一轮循环,当前 contunue中后面的语句不再执行。避免杂乱代码;重复利用,提高效率精品文档函数1 .定义函数1.1.

4、 函数语句定义法function函数名(参数1:参数类型,参数2:参数类型):返回类型/函数体1.2. 函数表达式定义法也称函数字面值或匿名函数,在早期版本广泛使用var函数名:function=function (参数1:参数类型,参数2:参数类型):返回类型/函数体1.3. 两种定义方法的区别和选择1.3.1. 区别? 作用域不同函数语句定义法可在定义前或定义后进行调用函数表达式定义法只能在定义后调用? this关键字指向不同函数语句定义法-当前函数作用域函数表达式定义法this指向随依附对象的不同而不同1.3.2. 选择一般使用函数语句定义法2 .调用函数2.1. 一般调用无参函数fun

5、ction HelloAS() trace("欢迎走进AS3.0世界)HelloAS();有参函数,参数有默认值,调用时不输入参数function HelloAS(str:String="AS3.0世界欢迎你! ") trace(str);HelloAS();有参函数,参数无默认值,调用时必须输入参数,且参数类型一致function HelloAS(str:String) trace(str);HelloAS("AS3.0 世界欢迎你!");如没指定参数的类型,输入参数类型没强制要求也可将函数赋值给变量,使用变量名调用函数function 求和

6、(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(s

7、um(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 su

8、m(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);可

9、以有多个语句,函数执行了语句后,就跳出函数体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="这是一个字符串"

10、;return a;trace(typeof(测试类型();如定义了返回值类型,返回的类型必须与定义类型相同如函数不需要返回值,也就不存在return语句,定义函数也不能设置返回类型。function 返回测试():String var a:String="这是一个字符串"trace(返回测试();4 .函数参数4.1. 传递参数的语法参数位于函数格式的括号中4.2. :参数类型=默认值,参数2:参数类型=默认值)函数支持传递多个参数,定义参数时,使用半角逗号分开不同的参数function intro(username:String,age:int):void trace(

11、"你的姓名:"+username+"年龄是:"+age);intro("小王",25);4.3. 传递参数的两种方法所有参数按引用传递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

12、 var a:int=100;_arr.push(a);var b:Array=1,2,3;trace("引用前:"+b);testArr(b);trace("引用后"+b);2.4.4. 给函数设置默认参数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.5. argumnets 对象和(rest)参数AS3.0调用函数时

13、检查参数数量的方法4.5.1. arguments 对象函数中可使用对象访问有关传递给函数的参数信息,auguments对象是一个数组,arguments.length属性记录参数数量function TestArg(a:int,b:int,c:int):void trace("输入的参数个数是:"+arguments.length);for (var i:uint=0; i<arguments.length; i+) trace("这是第个参数"+argumentsi);TestArg(1,2,3)arguments.callee属性通常用在匿名

14、函数中创建递归。function fac(i:int) if (i=1) return 1; else return i + arguments.callee(i - 1);trace(fac(100);4.5.2. (rest)参数rest参数可指定自己命名的数组来接受任意多个以逗号分隔的参数语法格式function(.args)function(参数 1,参数 2,.args) (rest)参数不具有 callee属性function TestArg(args):void trace("输入的参数个数是:"+args.length);for (var i:int=0;

15、i<args.length; i+) trace("这是第个"+i+"参数,其值为"+argsi);TestArg(1,2,3)3.(rest)参数还可与其他参数一起使用,但只能是最后一个列出的参数function TestArg(x:int,args):void trace("(rest)参数个数是"+args.length);for (var i:int=0; i<args.length; i+) trace("这是第个"+i+”(rest)参数,其值为"+argsi);TestArg(1

16、,2,3);事件的发送和处理1 .事件处理基础AS3.0事件机制基于文档对象模型( DOM3)1.1. 事件和事件处理基础知识1.1.1. 事件和事件处理基本概念单击鼠标是鼠标单击事件事件处理是发生事件后下一步的动作,也就是事件侦听器或事件侦听函数侦听的目的是了解发生了那些事件1.1.2. AS3.0中的事件和事件处理AS3.0事件:鼠标、键盘、文本输入、加载数据、远程连接及与swf进行的交互操作。事件用事件对象表示,事件对象是Event (事件)类或 Event类子类的实例。事件侦听器是用户编写的用于响应事件的函数或方法,并添加到事件目标/显示对象列表function事件侦听函数(事件对象:

17、事件类型):void /为响应事件面执行的动作事件目标.addEventListener(事件对象的事件名称,事件侦听函数);创建事件侦听器格式说明?事件侦听函数:响应事件要执行的动作或方法? 事件对象:事件对象指定的类名称? 事件目标:被侦听的电影票对象名称?事件对象的事件名称:事件常量1.1.3. AS3.0中事件处理任务?编写代码以响应事件?阻止代码响应事件处理事件对象?处理事件流?从类中调度事件? 创建自定义事件类型1.2. 早期AS版本中的事件处理1.2.1. AS1.0使用on()或onClipEvent()两个事件处理函数处理事件1.2.2. AS2.0事件处理机制包括回调函数事

18、件:onLoad, oninit, onComplete 等事件侦听器:addListener()、addEventListener()但this关键词指向不明确1.2.3. AS3.0只有一种事件处理模式只能使用addEventListener()注册侦听器可以对属于事件流部分的任何对象调用addEventListener()方法只有函数或方法可以是事件侦听器2 . Event 类Event类是所有事件的基类,所发生的事件必须是Event类或其子类的实例2.1. 了解Event类的属性2.1.1. type 属性Event.type表示事件对象的事件类型,2.1.2. cancelable

19、属性事件的默认行为是否可以阻止由布尔值表示是一个布尔值,默认为false和preventDefault()方法结合在一起使用2.1.3. target 属性存储对事件目标的引用var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawCircle(100,100,40);sp.graphics.endF川();addChild(sp);function TestTar(event:MouseEvent):void event.target.x=300;event.target.y=100; sp.add

20、EventListener(MouseEvent.CLICK,TestTar);2.1.4. 其他属性currentTarget、eventphase、bubbles 属性与事件流机制有关。Event类还有26个静态字符串常量,定义 26种事件类型,如 ADDED, REMOVED, UNLOAD2.2. 了解Event类的方法? Event.clone():赋值Event子类实例,返回 Event对象原始实例的副本? Event.toString():返回一个 Event对象所有属性的字符串? Event.stopPropogation():阻止事件对象移动到下一节点? Event.stop

21、ImmediatePropogation():阻止事件对象移动到下一节点,不执行当前节点其他事 件侦听器? Event.preventDefault():和属性结合使用,取消事件的默认行为的发生器2.3. Event类的子类? MouseEvnet? KeyBoardEvent? TimerEvent? TextEvent每个子类事件类型常量,添加新的属性自定义事件类3 .事件侦听器创建方法:先创建事件侦听函数,再在事件目标上注册侦听器函数3.1. 创建事件侦听器事件侦听器格式为函数,可以是自定义函数,也可以是实例的一个方法格式function侦听器名称(evt:事件类型):void ?侦听器

22、名称:命名符合变量命名规则? evt:事件侦听器参数?事件类型Event类或子类实例?void:返回值为空,不可省var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawCircle(100,100,40);sp.graphics.endF川();addChild(sp);function Test(event:MouseEvent):void trace("事件侦听函数建立成功");sp.addEventListener(MouseEvent.CLICK,Test);管理事件侦听

23、器3.2. 管理事件侦听器3.2.1. 注册事件侦听器addEventListener函数注册事件侦听器格式事件发送者.addEventListener(事件类型,侦听器)?事件发送者:为 EventDispatcher类或子类的实例?事件类型:Event类实例或其子类的实例?侦听器:事件执行时的侦听器函数3.2.2. 删除事件侦听器格式事件发送者.addEventListener(事件类型,侦听器)删除不再使用的侦听器可节约系统资源,提高程序效率例:import flash.display.Sprite;import flash.events.MouseEvent;var sp:Sprite

24、=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawCircle(100,100,40);sp.graphics.endF川();addChild(sp);function Test(evt:MouseEvent):voidtrace(“事件侦听函数建立成功");sp.removeEventListener(MouseEvent.CLICK,Test);sp.addEventListener(MouseEvent.CLICK,Test);3.2.3. 检查事件侦听器检查事件侦听器事件发送者.hasEventLis

25、tener(事件类型)import flash.display.Sprite;import flash.events.MouseEvent;var sp:Sprite=new Sprite();sp.graphics.beginF川(0x00ff00);sp.graphics.drawCircle(200,200,100);sp.graphics.endF川();addChild(sp)function Test(evt:MouseEvent):voidtrace("侦听器事件已建立");sp.removeEventListener(MouseEvent.CLICK,Tes

26、t);trace(sp.hasEventListener(MouseEvent.CLICK);sp.addEventListener(MouseEvent.CLICK,Test);trace(sp.hasEventListener(MouseEvent.CLICK);willTrigger方法能够检查显示列表对象及所有父级上的侦听器4 .事件处理类型所有事件位于flash.events包内,卞建了 20多个Eevnt类的子类,来管理事件类型4.1. 鼠标事件MouseEvent类定义了 10种的鼠标事件? CLICK单击事件? DOUBLE_CLICK 双击事件? MOUSE_DOWN :按下

27、事件?MOUSE_MOVE:移动事件?MOUSE_OUT:移出事件? MOUSE_OVER移过事件?MOUSE_UP:释放事件?MOUSE_WHEEL滚轮滚动事件?ROLL_OUT:滑入事件? ROLL_OVER0滑出事件例5-1给显示对象添加鼠标单击事件例5-2给显示对象添加鼠标双击事件执行双击事件,必须将其属性设置为turesp.doubleClickEnabled=true;例5-3创建一个可以拖放的显示对象/设置可以接受按钮事件sp.buttonMode=true;例5-4自定义鼠标样式cursor.x=evt.stageX;cursor.y=evt.stageY;evt.update

28、AfterEvent();例5-5鼠标划过时产生变色效果function makeBlue(event:MouseEvent):void colorInfo.c010r=0x003399;event.target.transform.colorTransform=colorInfo;4.2. 键盘事件使用KeyboardEvent类处理键盘操作事件,有两类型事件KeyboardEvent.KEY_DOWN :按下键盘KeyboardEvent.KEY_UP:释放键盘4.例5-6判断按下和释放键盘使用时要获得焦点,应先单击显示对象例5-7使用上下左右键控制运动switch (event.keyC

29、ode) case Keyboard.UP :box.y-=10;break;keyboard.DOWN 及 KeyCode例5-8使用Keyboard类预定义常量87 (W) , 83 (S) , 65 (A) , 68 (D)4.3. 时间事件Timer类的TimerEvent事件类其建立的时间间隔受帧频和计算机内存大小的影响,导致运算不准确TimerEvent.TIMER :计时事件TimerEvent.TIMER_COMPLETE:计时结束事件例5-9 1分钟倒计时4.4. 帧循环事件帧循环事件能够控制代码随帧频播放。例5-10球运动ENTER_FRAME|r件不需侦听时,要移除侦听,

30、否则消耗资源。面向对象编程基础1 .概述对象是有自己特定标识的东西,如人、汽车、植物等。有时会觉得虚无缥缈。属性是对象共在的特点,如人的属性有身高、体重、年龄、性别方法是对象要做的事情,如人的吃饭、睡觉、工作、走路等属性和方法是对象的本质组成部分,面向对象编程即将对象的属性和方法包装成类类有核心类和自定义类,核心类是已设计好的类。2 .类对象与类类似于实例与元件类是一群对象共有的特性和行为包括包块和类名称,构造函数,属性和方法2.1. 创建自定义类创建步骤1) 保存类文件的目录2) 创建以类名命名的 AS文件3) package 类名4) import其他类5) class 类名6) 构造函数、方法和属性2.2. 创建类实例1) import类路径.类名称2) var类引用名称:类名称=new类名称构造函数()2.3. 包块和类package包块路径包块路径为类的存储路径,无路径表明存储为默认目录所有类要定义到一个包块中public class 类名称类名称第一个字母大写2.4. 包的导入1) import flash.display.Sprite :直接导入单个包2) import flash.text.* 导入整个包3) 使用同

温馨提示

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

评论

0/150

提交评论