收藏 分销(赏)

AS3.0从入门到精通.doc

上传人:快乐****生活 文档编号:4585767 上传时间:2024-09-30 格式:DOC 页数:21 大小:92KB 下载积分:10 金币
下载 相关 举报
AS3.0从入门到精通.doc_第1页
第1页 / 共21页
AS3.0从入门到精通.doc_第2页
第2页 / 共21页


点击查看更多>>
资源描述
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. 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<arguments.length; i++) { trace("这是第个参数"+arguments[i]); } } 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,参数2,...args) …(rest)参数不具有callee属性 function TestArg(...args):void { trace("输入的参数个数是:"+args.length); for (var i:int=0; i<args.length; i++) { trace("这是第个"+i+"参数,其值为"+args[i]); } } 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)参数,其值为"+args[i]); } } TestArg(1,2,3); 事件的发送和处理 1. 事件处理基础 AS3.0事件机制基于文档对象模型(DOM3) 1.1. 事件和事件处理基础知识 1.1.1. 事件和事件处理基本概念 单击鼠标是鼠标单击事件 事件处理是发生事件后下一步的动作,也就是事件侦听器或事件侦听函数 侦听的目的是了解发生了那些事件 1.1.2. AS3.0中的事件和事件处理 AS3.0事件:鼠标、键盘、文本输入、加载数据、远程连接及与swf进行的交互操作。 事件用事件对象表示,事件对象是Event(事件)类或Event类子类的实例。 事件侦听器是用户编写的用于响应事件的函数或方法,并添加到事件目标/显示对象列表。 function 事件侦听函数(事件对象:事件类型):void { //为响应事件面执行的动作 } 事件目标.addEventListener(事件对象的事件名称,事件侦听函数); 创建事件侦听器格式说明 Ø 事件侦听函数:响应事件要执行的动作或方法 Ø 事件对象:事件对象指定的类名称 Ø 事件目标:被侦听的电影票对象名称 Ø 事件对象的事件名称:事件常量 1.1.3. AS3.0中事件处理任务 Ø 编写代码以响应事件 Ø 阻止代码响应事件 Ø 处理事件对象 Ø 处理事件流 Ø 从类中调度事件 Ø 创建自定义事件类型 1.2. 早期AS版本中的事件处理 1.2.1. AS1.0 使用on()或onClipEvent()两个事件处理函数处理事件 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属性 Event.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.target.x=300; event.target.y=100; } sp.addEventListener(MouseEvent.CLICK,TestTar); 2.1.4. 其他属性 currentTarget、eventphase、bubbles属性与事件流机制有关。 Event类还有26个静态字符串常量,定义26种事件类型,如ADDED, REMOVED, UNLOAD 2.2. 了解Event类的方法 Ø Event.clone():赋值Event子类实例,返回Event对象原始实例的副本 Ø Event.toString():返回一个Event对象所有属性的字符串 Ø Event.stopPropogation():阻止事件对象移动到下一节点 Ø Event.stopImmediatePropogation():阻止事件对象移动到下一节点,不执行当前节点其他事件侦听器 Ø Event.preventDefault():和属性结合使用,取消事件的默认行为的发生器 2.3. Event类的子类 Ø MouseEvnet Ø KeyBoardEvent Ø TimerEvent Ø TextEvent 每个子类事件类型常量,添加新的属性 自定义事件类 3. 事件侦听器 创建方法:先创建事件侦听函数,再在事件目标上注册侦听器函数 3.1. 创建事件侦听器 事件侦听器格式为函数,可以是自定义函数,也可以是实例的一个方法 格式 function 侦听器名称(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,Test);管理事件侦听器 3.2. 管理事件侦听器 3.2.1. 注册事件侦听器 addEventListener函数注册事件侦听器 格式 事件发送者.addEventListener(事件类型,侦听器) Ø 事件发送者:为EventDispatcher类或子类的实例 Ø 事件类型:Event类实例或其子类的实例 Ø 侦听器:事件执行时的侦听器函数 3.2.2. 删除事件侦听器 格式 事件发送者.addEventListener(事件类型,侦听器) 删除不再使用的侦听器可节约系统资源,提高程序效率 例: import flash.display.Sprite; import flash.events.MouseEvent; var sp:Sprite=new Sprite(); sp.graphics.beginFill(0xff0000); sp.graphics.drawCircle(100,100,40); sp.graphics.endFill(); addChild(sp); function Test(evt:MouseEvent):void { trace("事件侦听函数建立成功"); sp.removeEventListener(MouseEvent.CLICK,Test); } sp.addEventListener(MouseEvent.CLICK,Test); 3.2.3. 检查事件侦听器 检查事件侦听器 事件发送者.hasEventListener(事件类型) 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):void { trace("侦听器事件已建立"); sp.removeEventListener(MouseEvent.CLICK,Test); 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:按下事件 Ø MOUSE_MOVE:移动事件 Ø MOUSE_OUT:移出事件 Ø MOUSE_OVER:移过事件 Ø MOUSE_UP:释放事件 Ø MOUSE_WHEEL:滚轮滚动事件 Ø ROLL_OUT:滑入事件 Ø ROLL_OVER0:滑出事件 例5-1 给显示对象添加鼠标单击事件 例5-2 给显示对象添加鼠标双击事件 //执行双击事件,必须将其属性设置为ture sp.doubleClickEnabled=true; 例5-3创建一个可以拖放的显示对象 //设置可以接受按钮事件 sp.buttonMode=true; 例5-4自定义鼠标样式 cursor.x=evt.stageX; cursor.y=evt.stageY; evt.updateAfterEvent(); 例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.keyCode) { 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事件不需侦听时,要移除侦听,否则消耗资源。 面向对象编程基础 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) 使用同一包的类文件,则不需要导入。 2.5. 构造函数 创建的目的是在创建对象时初始化对象,为对象的变量输值 类可创建构造函数,也可不创建构造函数 构造函数可以有参数 1) 构造函数与类名完全相同 2) 只能使用public访问控制 3) 不能使用return语句返回值,但可控制程序流程 4) 不能声明返回类型 2.6. 声明和访问类的属性 一般在class之后声明属性 属性分实例属性和静态属性,实例属性须创建类实例后访问,静态属性可直接访问 属性的声明 1) var x:Number 2) var name:String="good" 3) public var birthday:Date 4) public var age:Number=30 应注意 1) 声明实例属性可直接输值,但不能输表达式 2) 实例实现只能在包内访问 3) var前可加访问控制符 a) internal:同一包中引用可见 b) private:同一类中引用可见 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 方法名称(参数...):返回类型{} 方法的访问:实例名.方法 隐式获取和设置类属性 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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

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

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服