收藏 分享(赏)

《Flash ActionScript 3.0编程技术》课程简明教程.doc

上传人:精品资料 文档编号:10669863 上传时间:2019-12-18 格式:DOC 页数:66 大小:1.51MB
下载 相关 举报
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第1页
第1页 / 共66页
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第2页
第2页 / 共66页
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第3页
第3页 / 共66页
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第4页
第4页 / 共66页
《Flash ActionScript 3.0编程技术》课程简明教程.doc_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、1Flash 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文件绑定(目

2、的是为了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.displayimpor

3、t flash.display.DisplayObjectContainer;import flash.display.Sprite;import flash.text.TextField;public class AddTextSprite extends Sprite 2public function AddTextSprite() /创建空容器var sp:Sprite=new Sprite();sp.x=50;sp.y=50;addChild(sp);/ 创建文本对象var mytext:TextField=new TextField();mytext.text=“这是一个位于容器中的

4、显示文本“;mytext.width=200;/显示对象sp.addChild(mytext);212 标点符号使用分号(;)逗号(,)冒号(:)小括号(()) 中括号( )大括号()实例 1var date:Date=new Date();var hh:int=date.getHours();if ( hh = 0 ) var b:int;var i :int=5;8a=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);输

5、出:a=6 b=6243 关系运算ActionScript 3.0 编程语言中提供的关系运算符有:、= 、a+b - c(a+b)cb!=c - (ab)!=ca=b a=(bc - a=(bc)* 关系表达式的值只有两个:关系表达式成立为真,以“true”表示9关系表达式不成立为假,以“false”表示例:var a:int=2;Var b:int=3;1)a=b 的值为 false2)a=a+1=a+1=30);/输出:truetrace(b0/输出:falsetrace(a0|b0);/输出:truetrace(true|true);/输出:truetrace(false|false);

6、/输出:false补充资料:例 1:写出描述点 A(x,y)落在图中兰色部分(不压线)的 ActionScript 语言中表达式-2111例 2:设 a=3,b=4,c=5 写出下列各逻辑表达式的值(1)a+bci10?trace(“大于 10 了“):trace(“小于 10 了“);/输出:大于 10 了246 其他运算符1)typeof 运算符(用于测试对象的类型)typeof (对象)例如:trace(typeof(10)2)is 运算符(用于判断一个对象是不是属于一种数据类型,返回 Boolean 型变量。trace(“5” is Number); /输出 false3) as 运算

7、符as 运算符和 is 运算符的使用格式相同,但是返回的值不同。如果对象的类型相同,返回对象的值;若不同,则返回 null。trace(“5” as Number); /输出 nulltrace(“5” as String); /输出 512247 运算符的优先级运算符优先顺序表组 运算符主要 、x:y、()、f(x)、new x.y 、xy、 、 关系 、 = 、as、 in 、instanceof 、is 等于 =、 !=、= 、!= 按位“与“ 实例 1var a:uint = 12;if (a % 2 = 0)trace(a,“是偶数。“);elsetrace(a,“是偶数。“);基本

8、格式 流程图if(表达式)语句实例 2var a:uint = 12;if (a % 2 = 0)14trace(a,“是偶数。“);3.2.2 ifelse ifelse 语句基本格式if(表达式 1) 语句 1;else if(表达式 2)语句 2;else if(表达式 3) 语句 3;.else if(表达式 n)语句 n;15else 语句 m;流程图实例var date:Date=new Date();var hh:int=date.getHours();if ( hh = 0 ) 3.2.3 switch 语句基本格式switch (表达式) 16case:常量表达式 1程序语句

9、 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(“今天星期三“);17break;case 4 :trace(“今天星期四“);break;c

10、ase 5 :trace(“今天星期五“);break;case 6 :trace(“今天星期六“);break;default :trace(“超出星期范围,是不可能的!“);break;33 循环程序结构3.3.1 for 循环语句基本格式 流程图for(初始化;循环条件;步进语句) 循环执行的语句; 实例18/初始化变量var sum = 0;/下面是 for 循环for (var i:int=1; i=100; i+) sum = sum + i;/循环体trace(“sum=“+sum);/输出结果3.3.2 while 循环语句基本格式 流程图while(循环条件) 循环执行的语句

11、实例/先初始化变量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 循环语句基本格式 流程图19do 循环执行的语句 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:

12、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 乘法表20模块4 函数4.1 定义函数function 函数名(参数1:参数类型,参数2:参数类型):返回类型/函数体代码格式说明:function:定义函数使用的关键字。注意 function 关键字要以小写字母开头。函数名:定义函数

13、的名称。函数名要符合变量命名的规则,最好给函数取一个与其功能一致的名字。小括号:定义函数的必需的格式,小括号内的参数和参数类型都可选。返回类型:定义函数的返回类型,也是可选的,要设置返回类型,冒号和返回类型必须成对出现,而且返回类型必须是存在的类型。大括号:定义函数的必需格式,需要成对出现。括起来的是函数定义的程序内容,是调用函数时执行的代码。实例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;r

14、ed.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;214.3 函数的返回值(reture 语句、返回值类型)实例function 圆面积(r:Number):Numbervar s:Number=Math.PI*r*rre

15、turn 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);trac

16、e(shu);trace(shuzu);4.5 函数的嵌套定义和递归调用4.5.1 函数的嵌套定义实例 1function sum(a:String,b:Number)22function 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

17、 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);23trace(sum(100);/输出:5050模块5 事件侦听机制51 事件侦听机制511 注册事件侦听

18、函数与创建事件侦听函数实例/定义一个变量,使用绘图对象创建一个圆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

19、):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

20、);24/当鼠标指针经过sp上方时它会触发手形光标的显示sp.buttonMode=true;/创建事件侦听函数function Test(event:MouseEvent):void trace(“事件侦听函数建立成功!“)/移除事件侦听函数/注册事件侦听函数语法格式:事件发送者. removeEventListener( 事件类型. 侦听函数名称)sp.removeEventListener(MouseEvent.CLICK,Test);/注册事件侦听器sp.addEventListener(MouseEvent.CLICK,Test);52 常用事件类型(位于 flash.events

21、包内)鼠标事件(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

22、:定义鼠标滑出事件实例1 给显示对象添加鼠标单击事件/创建矩形作为按钮背景var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawRect(0,0,100,20);sp.graphics.endFill();addChild(sp);25/创建按钮上的文本var label:TextField=new TextField();label.text=“单击按钮“;sp.addChild(label);/创建事件侦听函数function click(event:MouseEvent):void /单击后改

23、变的文字内容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;/创建按钮上的文本v

24、ar 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.

25、beginFill(0xff0000);sp.graphics.drawCircle(100,100,40);sp.graphics.endFill();addChild(sp);/当鼠标指针经过 sp 上方时它会触发手形光标的显示sp.buttonMode=true;/创建拖动函数function press(evt:MouseEvent):void 26/实施拖动evt.target.startDrag(); / target 为 MouseEvent 类的属性 startDrag()为 Sprite 类的方法/创建停止拖动函数function release(evt:MouseEvent

26、):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.mov

27、eTo(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

28、 事件侦听函数stage.addEventListener(MouseEvent.MOUSE_MOVE,move);/注册鼠标事件Mouse.hide();/鼠标隐藏522 键盘事件KeyboardEvent类定义了两种键盘事件,具体如下:KeyboardEvent.KEY_DOWN:定义按下键盘时事件KeyboardEvent.KEY_UP:定义松开键盘时事件27实例1/创建矩形对象var sp:Sprite=new Sprite();sp.graphics.beginFill(0xff0000);sp.graphics.drawRect(0,0,100,20);sp.graphics.en

29、dFill();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,keyd

30、own);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,keyev

31、t);/在舞台上注册键盘按下事件/建立事件侦听器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 :/按下向左键28box.x-= 10;break;case Keyboard.RIGHT :/按下向右键box.x+= 10;break;default :break;实例3var box=new

32、 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 /trac

33、e(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;29523 时间事件TimerEvent类定义了两种时间事件,具体如下:TimerEvent.TIMER:计时事件,按照设定的事件发出。TimerEvent.TIMER_COMPLETE:计时结束事件,当计时结束时发

34、出实例/创建一个文本框,用于显示时间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

35、;/倒计时时间/显示当前时间label.text=String(time);/创建事件侦听器function timefun(the:TimerEvent):void /记录次数递减time-=1;/显示次数label.text=String(time);524 帧循环(ENTER_FRAME)事件帧循环(ENTER_FRAME)事件(属于DisplayObject类)根据设定的帧率(如:20帧/s)每秒刷新屏幕20次,即每次刷新屏幕时都会调用事件侦听函数实例/创建ball对象var ball:Sprite=new Sprite();ball.graphics.beginFill(0xff00

36、00);ball.graphics.drawCircle(0,0,10);30ball.graphics.endFill();/加入舞台addChild(ball);/设置初始位置ball.x=50ball.y=200/创建事件侦听函数function moveball(evt:Event):void /改变位置ball.x+/注册事件ball.addEventListener(Event.ENTER_FRAME,moveball);模块6 面向对象编程基础6、1 面向对象编程技术概述面向对象的编程,其英文是“Object-Oriented Programming”,简写为OOP。它以对象为基

37、本单元来进行代码划分,组织程序代码。6.1.1 一道智力题引发的思考6.1.2 类(Class)和对象(Object)的概念类(Class) 面向对象思想来源于对现实世界的认知。现实世界缤纷复杂、种类繁多,难于认识和理解。但是聪明的人们学会了把这些错综复杂的事物进行分类,从而使世界变得井井有条。比如我们由各式各样的汽车抽象出汽车的概念,由形形色色的猫抽象出猫的概念,由五彩斑斓的鲜花抽象出花的概念等。汽车、猫、鲜花都代表着一类事物。每一类事物都有特定的状态,比如汽车的品牌、时速、马力、耗油量、座椅数,小猫的年龄、体重、毛色,鲜花的颜色、花瓣形状、花瓣数目,都是在描述事物的状态。每类事物也都有一定的行为,比如汽车启动、行驶、加速、减速、刹车、停车,猫捉老鼠,鲜花盛开。这些不同的状态和行为将各类事物区分开来。面向对象编程也采用了类的概念,把事物编写成一个个“类”。在类中,用数据表示事物的状态,用函数实现事物的行为,这样就使编程方式和人的思维方式保持一致,极大的降低了思维难度。对象(Object) 作为初学者,比较容易混淆类和对象的概念。类是一个抽象的概念,对象则是类的具体实例。比如人是一个类,司马迁、李白、杜甫都是对象;首都是一个类,则北京、伦敦、华盛顿、莫斯科都是对象;动画猫是一个类,则Kitty、Grafield和Doraemon都是对象

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报