《Flash ActionScript 3.0编程技术》课程简明教程.doc_第1页
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第2页
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第3页
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第4页
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

Flash ActionScript 3.0编程技术课程简明教程浙江外国语学院 石其乐模块1 ActionScript 3.0概述11 Adobe Flash CS5写入ActionScript 3.0代码的方法Adobe Flash CS5 两种写入ActionScript 3.0代码的方法:在时间轴的关键帧加入ActionScript代码(动作面板介绍)trace(Welcome you);在外部写出一个单独的ActionScript类文件,然后绑定或者导入到fla文件中(类的3种用法:和fla文件绑定、和Flash中的库元件绑定、使用import关键字导入类)和fla文件绑定(目的是为了AS代码和Flash设计完全剥离)(脚本窗口介绍)实例package import flash.display.Spritepublic class Welcome extends Sprite public function Welcome() trace(Welcome You);模块2 ActionScript 3.0 编程语言基础21 AS3.0语法211 点语法1)可以采用对象后面跟点运算符的属性名称(方法)名称来引用对象的属性(方法)。2)可以采用点运算符表示包路径。3)可以使用点运算符描述显示对象的路径实例package com.lzxt.displayimport flash.display.DisplayObjectContainer;import flash.display.Sprite;import flash.text.TextField;public class AddTextSprite extends Sprite public function AddTextSprite() /创建空容器var sp:Sprite=new Sprite();sp.x=50;sp.y=50;addChild(sp);/ 创建文本对象var mytext:TextField=new TextField();mytext.text=这是一个位于容器中的显示文本;mytext.width=200;/显示对象sp.addChild(mytext);212 标点符号使用分号(;)逗号(,)冒号(:)小括号(())中括号()大括号()实例 1var date:Date=new Date();var hh:int=date.getHours();if ( hh = 0 ) & (hh = 4 ) & (hh = 7 ) & (hh = 12) & (hh = 13) & (hh = 17) & (hh = 18) & (hh = 19) & (hh a+=b* a+=b 这种运算实际上是算术运算符与赋值运算符的合成或简化, 称为:自反算术赋值运算符 a=a-b - a-=b a=a*b - a*=b a=a/b - a/=b a=a%b - a%=b+=、-=、*=、/=、%=2.4.2 自加自减运算符i=i+1 - i+=1i=i-1 - i-=1 后缀形式 前缀形式自加 i+ +i自减 i- -i先使用后增值var a:int;var b:int;var i :int=5;a=i+; b=i; trace(a=+a,b=+b);输出:a=5 b=6先增值后使用var a:int;var b:int;var i :int=5;a=+i; b=i; trace(a=+a,b=+b);输出:a=6 b=6243 关系运算ActionScript 3.0 编程语言中提供的关系运算符有: 、= 、 a+b - c(a+b) cb!=c - (ab)!=c a=b a=(bc - a=(bc)* 关系表达式的值只有两个:关系表达式成立为真,以“true”表示 关系表达式不成立为假,以“false”表示例:var a:int=2;Var b:int=3; 1)a=b 的值为false 2)a=a+1=a+1=3=5 00);/输出:truetrace(b0&b0);/输出:falsetrace(a0|b0);/输出:truetrace(true|true);/输出:truetrace(false|false);/输出:false补充资料:例1:写出描述点A(x,y)落在图中兰色部分(不压线)的ActionScript语言中表达式 -2x&x2&-2y&y1例2:设a=3,b=4,c=5 写出下列各逻辑表达式的值(1)a+bc&b=c(2)a|b+c&b-c(3)!(ab)&!c|1(4)!(x=a)&(y=b)&0(5)!(a+b)+c-1&b+c/2245 条件运算* 条件运算是一种在两个表达式的值中选择一个的操作* 一般形式为: e1 ? e2 : e3 (34?5:6)* 条件运算符优先于赋值运算符* 条件运算符结合方向:右结合ab?a:cd?c:dab?a:(cd?c:d)实例var i:int=11;i10?trace(大于10了):trace(小于10了);/输出:大于10了246 其他运算符1)typeof运算符(用于测试对象的类型)typeof (对象)例如:trace(typeof(10)2)is 运算符(用于判断一个对象是不是属于一种数据类型,返回Boolean型变量。trace(“5” is Number); /输出 false3) as 运算符as运算符和is运算符的使用格式相同,但是返回的值不同。如果对象的类型相同,返回对象的值;若不同,则返回null。trace(“5” as Number); /输出 nulltrace(“5” as String); /输出 5247运算符的优先级运算符优先顺序表组运算符主要、x:y、()、f(x)、new x.y 、xy、 、 : . 后缀x+ 、x- 一元+x 、-x、 + 、-、 、! 、delete、 typeof、 void 乘法* 、/ 、% 加法+、 - 按位移位、 关系、 = 、as、 in 、instanceof 、is 等于=、 !=、= 、!= 按位与& 按位异或 按位或| 逻辑与& 逻辑或| 条件?: 赋值=、 *= 、/=、 %= 、+= 、-=、 =、= 、&= 、= 、|= 逗号, 模块3 ActionScript 3.0 程序设计31 程序的三种结构3.1.1 顺序结构3.1.2 选择结构3.1.3 循环结构32 选择程序结构if.else 条件语句if.else if.else语句Switch语句3.2.1 if.else 条件语句 基本格式流程图if(表达式)语句1;else语句2;实例 1var a:uint = 12;if (a % 2 = 0)trace(a,是偶数。);elsetrace(a,是偶数。);基本格式流程图if(表达式)语句实例2var a:uint = 12;if (a % 2 = 0)trace(a,是偶数。);3.2.2 if.else if.else语句基本格式if(表达式1) 语句1;else if(表达式2)语句2;else if(表达式3) 语句3;.else if(表达式n)语句n;else 语句m;流程图实例var date:Date=new Date();var hh:int=date.getHours();if ( hh = 0 ) & (hh = 4 ) & (hh = 7 ) & (hh = 12) & (hh = 13) & (hh = 17) & (hh = 18) & (hh = 19) & (hh = 23) trace(一天过的可真快!今天过的好吗?);3.2.3 switch 语句基本格式switch (表达式) case:常量表达式1程序语句1;break;case: 常量表达式2程序语句2;break;.case: 常量表达式n程序语句n;break;default:程序语句n+1; 流程图实例var date:Date = new Date();var dd:uint = date.getDay();switch (dd) case 0 :trace(今天星期日);break;case 1 :trace(今天星期一);break;case 2 :trace(今天星期二);break;case 3 :trace(今天星期三);break;case 4 :trace(今天星期四);break;case 5 :trace(今天星期五);break;case 6 :trace(今天星期六);break;default :trace(超出星期范围,是不可能的!);break;33循环程序结构3.3.1 for 循环语句基本格式流程图for(初始化;循环条件;步进语句) 循环执行的语句; 实例/初始化变量var sum = 0;/下面是 for 循环for (var i:int=1; i=100; i+) sum = sum + i;/循环体trace(sum=+sum);/输出结果3.3.2 while 循环语句基本格式流程图while(循环条件) 循环执行的语句实例/先初始化变量var i:int = 0;var sum:int=0;/下面是 while 循环while (i = 100) sum = sum + i;i+;trace(sum=+sum);/ 输出:sum=50503.3.3 do while 循环语句基本格式流程图do 循环执行的语句 while (循环条件)实例/初始化变量var i:int=0;var sum:int;/循环语句do ;/循环体sum+=i;i+; while (i=100);/输出结果trace(sum=+sum);/输出:sum=50503.3.4 循环的嵌套/循环语句1for (var i:int=1; i10; i+) /循环语句2for (var j:int=1; j=i; j+) /循环体var label:TextField=new TextField();label.text=i+j+=+i*j;label.x=5+50*i;label.y=20*j;addChild(label);/在Flash Player中显示99乘法表模块4 函数4.1 定义函数function 函数名(参数1:参数类型,参数2:参数类型):返回类型/函数体代码格式说明:function:定义函数使用的关键字。注意function关键字要以小写字母开头。函数名:定义函数的名称。函数名要符合变量命名的规则,最好给函数取一个与其功能一致的名字。小括号:定义函数的必需的格式,小括号内的参数和参数类型都可选。返回类型:定义函数的返回类型,也是可选的,要设置返回类型,冒号和返回类型必须成对出现,而且返回类型必须是存在的类型。大括号:定义函数的必需格式,需要成对出现。括起来的是函数定义的程序内容,是调用函数时执行的代码。实例function sum(a:int,b:int):int return a + b;trace(sum(1,2)/输出:34.2 调用函数实例var red:Shape = DrawRect(0xFF0000,40,40);red.x = 20;red.y = 20;/加入容器addChild(red);function DrawRect(color:uint,w:Number,h:Number):Shapevar shape:Shape = new Shape ;shape.graphics.beginFill(color);shape.graphics.drawRect(0,0,w,h);shape.graphics.endFill();return shape;4.3 函数的返回值(reture语句、返回值类型)实例function 圆面积(r:Number):Numbervar s:Number=Math.PI*r*rreturn strace(圆面积(5)/输出:78.539816339744834.4 函数的参数(形参和实参、函数参数的传递方式)实例1function Welcome(username:String):void trace(欢迎你!+username);Welcome(张三);Welcome(小明);/输出:欢迎你!张三/输出:欢迎你!小明实例2数值传递和地址传递的区别function hanshu(a:int,b:Array):voida=100;b0=100;var shu:int=5;var shuzu:Array=1,2,3hanshu(shu,shuzu);trace(shu);trace(shuzu);4.5 函数的嵌套定义和递归调用4.5.1 函数的嵌套定义实例1function sum(a:String,b:Number)function STI(c:String):intreturn int(c);function NTR(d:Number):intreturn Math.round(d);return STI(a) + NTR(b);var a:String = 10;var b:Number = 5.56;trace(sum(a,b);/输出为16实例2function 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);/输出为164.5.2 递归调用实例function sum(n:int):int if (n=1) return 1; else return n + sum(n - 1);trace(sum(100);/输出:5050模块5 事件侦听机制51 事件侦听机制511 注册事件侦听函数与创建事件侦听函数实例/定义一个变量,使用绘图对象创建一个圆var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawCircle(100,100,40);sp.graphics.endFill();/把圆加入舞台中addChild(sp);/当鼠标指针经过sp上方时它会触发手形光标的显示sp.buttonMode=true;/创建事件侦听函数/创建事件侦听函数语法格式:function 侦听函数名称(event:事件类型):voidfunction Test(event:MouseEvent):void trace(事件侦听函数建立成功!)/注册事件侦听函数/注册事件侦听函数语法格式:事件发送者.addEventListener(事件类型. 侦听函数名称)sp.addEventListener(MouseEvent.CLICK,Test);512 删除事件侦听函数实例:/定义一个变量,使用绘图对象创建一个圆var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawCircle(100,100,40);sp.graphics.endFill();/把圆加入舞台中addChild(sp);/当鼠标指针经过sp上方时它会触发手形光标的显示sp.buttonMode=true;/创建事件侦听函数function Test(event:MouseEvent):void trace(事件侦听函数建立成功!)/移除事件侦听函数/注册事件侦听函数语法格式:事件发送者. removeEventListener(事件类型. 侦听函数名称)sp.removeEventListener(MouseEvent.CLICK,Test);/注册事件侦听器sp.addEventListener(MouseEvent.CLICK,Test);52 常用事件类型(位于flash.events包内)鼠标事件(MouseEvent)类型键盘事件(KeyboardEvent)类型事件事件(TimerEvent)类型帧循环(ENTER_FRAME)事件。521 鼠标事件MouseEvent类定义了10中常见的鼠标事件,具体如下:CLICK:定义鼠标单击事件DOUBLE_CLICK:定义鼠标双击双击事件MOUSE_DOWN:定义鼠标按下事件MOUSE_MOVE:定义鼠标移动事件MOUSE_OUT:定义鼠标移出事件MOUSE_OVER:定义鼠标移过事件MOUSE_UP:定义鼠标提起事件MOUSE_WHEEL:定鼠标滚轴滚动触发事件 ROLL_OUT:定义鼠标滑入事件ROLL_OVER:定义鼠标滑出事件实例1 给显示对象添加鼠标单击事件/创建矩形作为按钮背景var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawRect(0,0,100,20);sp.graphics.endFill();addChild(sp);/创建按钮上的文本var label:TextField=new TextField();label.text=单击按钮;sp.addChild(label);/创建事件侦听函数function click(event:MouseEvent):void /单击后改变的文字内容label.text=你单击了按钮;/注册事件侦听函数sp.addEventListener(MouseEvent.CLICK,click);,click);实例2 给显示对象添加鼠标双击事件/创建按钮背景var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawRect(0,0,100,20);sp.graphics.endFill();addChild(sp);/要执行双击事件,必须将其属性设置为truesp.doubleClickEnabled = true;/创建按钮上的文本var label:TextField=new TextField();label.text=双击按钮;label.doubleClickEnabled=true;sp.addChild(label);/创建事件侦听函数function dbclick(event:MouseEvent):void label.text=你双击了按钮;/注册事件侦听函数sp.addEventListener(MouseEvent.DOUBLE_CLICK,dbclick);实例3 创建一个可以拖动的显示对象/创建圆形作为拖动对象var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawCircle(100,100,40);sp.graphics.endFill();addChild(sp);/当鼠标指针经过sp上方时它会触发手形光标的显示sp.buttonMode=true;/创建拖动函数function press(evt:MouseEvent):void /实施拖动evt.target.startDrag(); / target为MouseEvent类的属性startDrag()为Sprite类的方法/创建停止拖动函数function release(evt:MouseEvent):void evt.target.stopDrag(); /target为MouseEvent类的属性stopDrag()为Sprite类的方法/注册鼠标按下侦听函数sp.addEventListener(MouseEvent.MOUSE_DOWN,press);/注册鼠标松开侦听函数sp.addEventListener(MouseEvent.MOUSE_UP,release);实例四 自定义鼠标样式var cursor:Sprite=new Sprite();cursor.graphics.lineStyle(1,0x00ff00,1);cursor.graphics.moveTo(0,0);cursor.graphics.lineTo(15,8);cursor.graphics.lineTo(9,16);cursor.graphics.lineTo(0,13);cursor.graphics.lineTo(0,0);addChild(cursor);/以上创建鼠标样式function move(evt:MouseEvent):void cursor.x=evt.stageX;cursor.y=evt.stageY;/如果已修改显示列表,则此事件处理完成后将指示 Flash Player 呈现结果。 /evt.updateAfterEvent();/创建move事件侦听函数stage.addEventListener(MouseEvent.MOUSE_MOVE,move);/注册鼠标事件Mouse.hide();/鼠标隐藏522 键盘事件KeyboardEvent类定义了两种键盘事件,具体如下:KeyboardEvent.KEY_DOWN:定义按下键盘时事件KeyboardEvent.KEY_UP:定义松开键盘时事件实例1/创建矩形对象var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawRect(0,0,100,20);sp.graphics.endFill();addChild(sp);/创建显示文本对象var label:TextField=new TextField();label.text=;sp.addChild(label);/按下键盘侦听函数function keydown(event:KeyboardEvent):void label.text=你按了键盘;/松开键盘侦听函数function keyup(event:KeyboardEvent):void label.text=你现在松开了按下的键;/注册侦听函数stage.addEventListener(KeyboardEvent.KEY_DOWN,keydown);stage.addEventListener(KeyboardEvent.KEY_UP,keyup);实例2var box=new Sprite();addChild(box);box.graphics.beginFill(0xff0000);box.graphics.drawRect(0,0,40,40);box.graphics.endFill();box.x=stage.stageWidth / 2;box.y=stage.stageHeight / 2;/建立显示对象boxstage.addEventListener(KeyboardEvent.KEY_DOWN,keyevt);/在舞台上注册键盘按下事件/建立事件侦听器function keyevt(event:KeyboardEvent):void switch (event.keyCode) /获取当前键盘代码case Keyboard.UP :/按下向上键box.y-= 10;break;case Keyboard.DOWN :/按下向下键box.y+= 10;break;case Keyboard.LEFT :/按下向左键box.x-= 10;break;case Keyboard.RIGHT :/按下向右键box.x+= 10;break;default :break;实例3var box=new Sprite();addChild(box);box.graphics.beginFill(0xff0000);box.graphics.drawRect(0,0,40,40);box.graphics.endFill();box.x=stage.stageWidth / 2;box.y=stage.stageHeight / 2;/建立显示对象boxstage.addEventListener(KeyboardEvent.KEY_DOWN,keyevt);/在舞台上注册键盘按下事件/建立事件侦听器function keyevt(event:KeyboardEvent):void /trace(event.keyCode);switch (event.keyCode) /获取当前键盘代码case 87 :/按下向w键box.y-= 10;break;case 83 :/按下向s键box.y+= 10;break;case 65 :/按下向a键box.x-= 10;break;case 68 :/按下向d键box.x+= 10;break;default :break;523 时间事件TimerEvent类定义了两种时间事件,具体如下:TimerEvent.TIMER:计时事件,按照设定的事件发出。TimerEvent.TIMER_COMPLETE:计时结束事件,当计时结束时发出实例/创建一个文本框,用于显示时间var label:TextField=new TextField();addChild(label);/以上建立一个文本框用于显示倒计时时刻var myTimer:Timer = new Timer(1000,60);/ 1秒为间隔,触发60次动作(时间以毫秒为单位,1秒=1000毫秒,1毫秒=1000微秒)myTimer.addEventListener(TimerEvent.TIMER, timefun);/把timefun事件侦听器注册给TimerEvent.TIMER事件myTimer.start();/开始计时var time:Number=60;/倒计时时间/显示当前时间label.text=String(time);/创建事件侦听器function timefun(the:TimerEvent):void /记录次数递减time-=1;/显示次数label.text=String(time);524 帧循环(ENTER_FRA

温馨提示

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

评论

0/150

提交评论