收藏 分销(赏)

AS3.0从入门到精通.doc

上传人:快乐****生活 文档编号:4585767 上传时间:2024-09-30 格式:DOC 页数:21 大小:92KB
下载 相关 举报
AS3.0从入门到精通.doc_第1页
第1页 / 共21页
AS3.0从入门到精通.doc_第2页
第2页 / 共21页
AS3.0从入门到精通.doc_第3页
第3页 / 共21页
AS3.0从入门到精通.doc_第4页
第4页 / 共21页
AS3.0从入门到精通.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、AS3.0从入门到精通AS3.0程序设计1. 逻辑运算1.1. 程序设计中需进行逻辑运算(布尔运算)2. 程序的3种结构2.1. 顺序结构条件真假2.2. 选择结构1.2.1.3.1.4.2.3. 循环结构条件1.5.3. 选择程序结构3.1. ifelse 条件语句if(表达式)语句1else语句23.2. ifelse if.else语句if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3.else if (表达式n)语句nelse语句m3.3. switch语句switch (表达式)case 1 :程序语句1;break;case 2 :程序语句2;b

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

3、:改变变量的值4.2. while循环语句while (循环条件)循环执行语句; 循环条件:逻辑表达式,若为true,继续执行代码,否则退出循环4.3. dowhile语句do循环执行语句; while (循环条件); 先执行语句,后判断条件4.4. for.in 和for each.in语句1.6.4.5. 循环嵌套for(初始化;循环条件;步进语句)(初始化;循环条件;步进语句)循环执行语句4.6. 循环流程控制语句使用break和continue控制循环流程break:直接跳出循环,不再执行后面的语句continue:停止当前这一轮循环,直接跳到下一轮循环,当前contunue中后面的语

4、句不再执行。避免杂乱代码;重复利用,提高效率函数1. 定义函数1.1. 函数语句定义法function 函数名(参数1:参数类型,参数2:参数类型.):返回类型/函数体1.2. 函数表达式定义法也称函数字面值或匿名函数,在早期版本广泛使用var 函数名:function=function (参数1:参数类型,参数2:参数类型.):返回类型/函数体1.3. 两种定义方法的区别和选择1.3.1. 区别 作用域不同函数语句定义法可在定义前或定义后进行调用函数表达式定义法只能在定义后调用 this关键字指向不同函数语句定义法-当前函数作用域函数表达式定义法this指向随依附对象的不同而不同1.3.2.

5、 选择一般使用函数语句定义法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世界欢迎你!);如没指定参数的类型,输入参数类型没强制要求也可将函数赋值给变量,使用变量名调用函数funct

6、ion 求和(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

7、);嵌套函数可以调用与自身函数并列的函数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

8、=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 (x0) return 1; else if (x0) return -1; else return 0;trace(选择输入(10);语句的返回值可以是空“undefined”function 输出测试() return;trace(输出测试();3.3. 返回值类型返回值类型在函数定义中是可选参数,如未定义,返回值类型由return语句返回值的数据类型来定。function 测试类型() var a:String=这是一个字符串;return a;trace(typeof(测试类型();如定义了返回值类型,返回的

10、类型必须与定义类型相同如函数不需要返回值,也就不存在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. 传递参数的两种方法所有

11、参数按引用传递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可给函数设置默认参数,默认参数是可选项设置了默

12、认参数,调用函数时如没写参数,将使用函数的默认参数没有默认值的参数必须输入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(输入的参数个数是:+argum

13、ents.length);for (var i:uint=0; iarguments.length; i+) trace(这是第个参数+argumentsi);TestArg(1,2,3)arguments.callee属性通常用在匿名函数中创建递归。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,参数

14、2,.args)(rest)参数不具有callee属性function TestArg(.args):void trace(输入的参数个数是:+args.length);for (var i:int=0; iargs.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; iargs.length; i+)

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

16、数或方法,并添加到事件目标/显示对象列表。function 事件侦听函数(事件对象:事件类型):void /为响应事件面执行的动作事件目标.addEventListener(事件对象的事件名称,事件侦听函数);创建事件侦听器格式说明 事件侦听函数:响应事件要执行的动作或方法 事件对象:事件对象指定的类名称 事件目标:被侦听的电影票对象名称 事件对象的事件名称:事件常量1.1.3. AS3.0中事件处理任务 编写代码以响应事件 阻止代码响应事件 处理事件对象 处理事件流 从类中调度事件 创建自定义事件类型1.2. 早期AS版本中的事件处理1.2.1. AS1.0使用on()或onClipEven

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

18、t.type表示事件对象的事件类型,2.1.2. cancelable属性事件的默认行为是否可以阻止由布尔值表示是一个布尔值,默认为false和preventDefault()方法结合在一起使用2.1.3. target属性存储对事件目标的引用var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawCircle(100,100,40);sp.graphics.endFill();addChild(sp);function TestTar(event:MouseEvent):void event.tar

19、get.x=300;event.target.y=100;sp.addEventListener(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(

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

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

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

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

24、ventListener(事件类型)import flash.display.Sprite;import flash.events.MouseEvent;var sp:Sprite=new Sprite();sp.graphics.beginFill(0x00ff00);sp.graphics.drawCircle(200,200,100);sp.graphics.endFill();addChild(sp)function Test(evt:MouseEvent):voidtrace(侦听器事件已建立);sp.removeEventListener(MouseEvent.CLICK,Test

25、);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:按下事件 MOU

26、SE_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.updateAf

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

28、de) 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事件不需侦听时,要移除侦听,否则消耗资源。面向对象

29、编程基础1. 概述对象是有自己特定标识的东西,如人、汽车、植物等。有时会觉得虚无缥缈。属性是对象共在的特点,如人的属性有身高、体重、年龄、性别方法是对象要做的事情,如人的吃饭、睡觉、工作、走路等属性和方法是对象的本质组成部分,面向对象编程即将对象的属性和方法包装成类类有核心类和自定义类,核心类是已设计好的类。2. 类对象与类类似于实例与元件类是一群对象共有的特性和行为包括包块和类名称,构造函数,属性和方法2.1. 创建自定义类创建步骤1) 保存类文件的目录2) 创建以类名命名的AS文件3) package 类名4) import 其他类5) class 类名6) 构造函数、方法和属性2.2.

30、创建类实例1) import 类路径.类名称2) var 类引用名称:类名称=new 类名称构造函数()2.3. 包块和类package 包块路径包块路径为类的存储路径,无路径表明存储为默认目录所有类要定义到一个包块中public class 类名称类名称第一个字母大写2.4. 包的导入1) import flash.display.Sprite:直接导入单个包2) import flash.text.*导入整个包3) 使用同一包的类文件,则不需要导入。2.5. 构造函数创建的目的是在创建对象时初始化对象,为对象的变量输值类可创建构造函数,也可不创建构造函数构造函数可以有参数1) 构造函数与类

31、名完全相同2) 只能使用public访问控制3) 不能使用return语句返回值,但可控制程序流程4) 不能声明返回类型2.6. 声明和访问类的属性一般在class之后声明属性属性分实例属性和静态属性,实例属性须创建类实例后访问,静态属性可直接访问属性的声明1) var x:Number2) var name:String=good3) public var birthday:Date4) public var age:Number=30应注意1) 声明实例属性可直接输值,但不能输表达式2) 实例实现只能在包内访问3) var前可加访问控制符a) internal:同一包中引用可见b) pri

32、vate:同一类中引用可见c) protected:同一类和派生类中引用可见d) public:所有位置引用可见静态属性声明1) static var 属性名称:属性类型2) static var 属性名称:属性类型=值3) public static var 属性名称:属性类型4) public static var 属性名称:属性类型=值5) static constant 属性名称:属性类型=值 (声明常量)2.7. 声明和访问类的方法function 方法名称(参数.):返回类型静态方法创建:static function 方法名称(参数.):返回类型方法的访问:实例名.方法隐式获取和

33、设置类属性function get 方法名(参数.):返回类型return 属性function set 方法名(参数.):void 属性=参数2.8. 类的使用3种类的使用方法。(1)绑定文档类;(2)绑定库元件类;(3)import导入外部类2.8.1. 文档类文档类必须是继承自sprite类或movieclip类的子类文档类将时间轴上的代码放在文档中,在文档属性中绑定,实现文档与代码分离2.8.2. 与库文件绑定与库中影片剪辑绑定,每个影片剪辑绑定一个类例:水泡2.8.3. import导入类2.9. 包外类一个类文件可定义多个类,但包块内只能定义一个类,即主类。主类名称要与类文件名称相同。包块外可定义多个类,名称与类文件名称不同例包外类 Draw.as

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服