flash制作课件 扩展3 AS3编程学习资料_第1页
flash制作课件 扩展3 AS3编程学习资料_第2页
flash制作课件 扩展3 AS3编程学习资料_第3页
flash制作课件 扩展3 AS3编程学习资料_第4页
flash制作课件 扩展3 AS3编程学习资料_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

AS3编程§1面向对象机制

一、定义类(class)类 类名 类体包(Package)

包是存放代码的单位。使用一个类,先导入这个类所在的包。命名空间(NameSpace)

通常就是一个包,用于控制各个类的属性名、方法名的可见性,减少可能发生的命名冲突。属性(数据成员)方法(成员函数)定义类的语法访问控制class类名

{

访问控制1: 数据成员和成员函数访问控制2: 数据成员和成员函数

};访问控制private(私有):只有类实例自身可访问。public(公有):可以被任何类实例访问。protected(保护):只被自身类实例或派生类实例访问。internal(内部):该属性可被包内的类实例访问。默认例 Vehicle.aspackage{//本例类文件与FLA文件在同一个文件夹

publicclassVehicle{ publicvarnamev:String; publicvarnumberPlate:String; publicfunctiondrive(){ trace(namev+"开动了!"); } publicfunctionstopv(){ trace(namev+"停止了!"); } }}注:每个类都必须在其自身的文件中,文件名为该类的类名,扩展名.as。二、对象的创建对象:类的实例(“类”类型变量)创建对象:在舞台中建立元件、组件等脚本中var对象名:类名=new类名();引用对象的成员:

对象名.属性名或对象名.方法名(实参表)例Fla文档第1帧varmyVehicle:Vehicle=newVehicle();myVv="标致307";myVehicle.drive();myVehicle.stopv();输出:若FLA文件放c:\类文件Vehicle.as放c:\aa\bb文件夹如何?Vehicle.as改为:packageaa.bb{ publicclassVehicle {…… }}FLA文件前面加:

importaa.bb.Vehicle;三、构造函数(Constructor)

构造函数是在类中声明的一个名字与类名相同的方法,作用是在对象被创建时使用特定的值初始化对象。例package{ publicclassVehicle{ privatevarnamev:String; privatevarnumberPlate:String;

functionVehicle(nameValue:String,numberPlateValue:String) {namev=nameValue; numberPlate=numberPlateValue;trace("车辆名称:"+namev+"\n车牌号:"+numberPlate); }

publicfunctiondrive(){trace(namev+"开动了!");}publicfunctionstopv(){trace(namev+"停止了!");}}}注:构造函数只能使用public访问控制,不声明返回类型Fla文档第1帧:varmyVehicle1:Vehicle =newVehicle("东风标致307","苏E7CXX");varmyVehicle2:Vehicle =newVehicle("江淮汽车","京A5KXX");输出:如何设置Flash程序运行的起点? 定义一个继承自Sprite或MovieClip的类(文档类、主类),读取SWF时,这个类的构造函数会被自动调用。它就成为了我们程序的入口。例Test.as:package{ importflash.display.Sprite; publicclassTestextendsSprite{ publicfunctionTest(){ init(); } privatefunctioninit():void{

//写代码处

} } }填类名一、如何响应事件事件(event):在程序运行过程中发生并打断了程序的流程。事件处理(eventhandling):当事件发生时所做的动作。事件

系统事件,如load和enterFrame

用户事件键盘:KEY_DOWN、KEY_UP

鼠标:CLICK、DOUBLE_CLICK MOUSE_DOWN、MOUSE_MOVE MOUSE_OUT、MOUSE_OVER MOUSE_UP§2事件处理事件名表示:

"enterFrame"Event.ENTER_FRAME编译器会校错EventType.事件名字符串MouseEvent.MOUSE_DOWN"mouseDown"MouseEvent.MOUSE_UP"mouseUp"MouseEvent.MOUSE_MOVE"mouseMove"MouseEvent.MOUSE_OVER"mouseOver"MouseEvent.MOUSE_OUT"mouseOut"MouseEvent.CLICK"click"MouseEvent.DOUBLE_CLICK"doubleClick"KeyboardEvent.KEY_DOWN"keyDown"KeyboardEvent.KEY_UP"keyUp"事件侦听器 侦听器是一个用于侦听事件的对象。要想使对象侦听某个事件,可调用addEventListener函数:对象.addEventListener(事件类.事件名,事件处理函数);

当触发该事件时,调用相应事件处理函数。停止侦听对象.removeEventListener(事件类.事件名,事件处理函数);事件处理函数:

function函数名(事件实例:事件类) { …. }KeyboardEvent类的属性charCode:uint 按下或释放的键的字符代码值keyCode:uint 按下或释放的键的键控代码值ctrlKey:Boolean 指示Ctrl键是处于活动状态(true)

还是非活动状态(false)shiftKey:Boolean 指示Shift键是处于活动状态(true)

还是非活动状态(false)鼠标当前位置:mouseX mouseY例设fla文档只有1帧,舞台上有一个名为tf的TextField实例,当用户在TextField内键入内容时,在"输出"面板中反映键击。按下Shift键可暂时将TextField的边框颜色更改为红色。tf.border=true; tf.type="input";tf.addEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown);tf.addEventListener(KeyboardEvent.KEY_UP,reportKeyUp);functionreportKeyDown(event:KeyboardEvent):void{trace("按下:"+String.fromCharCode(event.charCode)+

"(键码:"+event.keyCode+"字符码:"+event.charCode+")");if(event.keyCode==Keyboard.SHIFT) tf.borderColor=0xFF0000;}functionreportKeyUp(event:KeyboardEvent):void{if(event.keyCode==Keyboard.SHIFT)tf.borderColor=0x000000;}例设fla文档只有1帧,舞台上有一个名为mc的影夹实例,用键盘控制影夹运动varx1=0,y1=0,x2=550,y2=400;//边界functionmove(evt:KeyboardEvent){ switch(evt.keyCode){ caseKeyboard.UP:mc.y-=2;break; caseKeyboard.DOWN:mc.y+=2;break; caseKeyboard.LEFT:mc.x-=2;break; caseKeyboard.RIGHT:mc.x+=2;break; } if(mc.x<x1){mc.x=x1;} if(mc.x>x2){mc.x=x2;} if(mc.y<y1){mc.y=y1;} if(mc.y>y2){mc.y=y2;}}stage.addEventListener(KeyboardEvent.KEY_DOWN,move);例设fla文档只有1帧,舞台上有一个名为mc的影夹实例,希望单击鼠标时影夹移至鼠标处。stage.addEventListener(MouseEvent.CLICK,fun);functionfun(evt:MouseEvent) {mc.x=mouseX;mc.y=mouseY;}例设fla文档只有1帧,舞台上有一个名为mc的影夹实例,希望移动鼠标时影夹跟随鼠标,以下哪个方法合适?方法1:stage.addEventListener(MouseEvent.MOUSE_OVER,fun);functionfun(evt:MouseEvent) {mc.x=mouseX;mc.y=mouseY;}方法2:stage.addEventListener(MouseEvent.MOUSE_MOVE,fun);functionfun(evt:MouseEvent){mc.x=mouseX;mc.y=mouseY;}§3Flash的显示类MovieClip类:创建影片剪辑TextField类:创建动态文本 创建的对象都是可视的MorphShape类:创建补间动画称显示类称可视对象一、何为显示列表显示列表:每个AS3程序都有一个由显示对象构成的层次结构,包含舞台、显示对象、显示对象容器。舞台SWF文件主类显示对象容器1显示对象2显示对象3显示对象容器2显示对象1

用addChild(对象);把对象加入到某可视对象之下,该对象就可见。移除显示对象可用removeChild(对象)。二、AS3内置的显示类DisplayObject类AVM1Movie类Bitmap类MorphShape类StaticText类Video类Shape类InteractiveObject类SimpleButton类TextField类DisplayObjectContainer类Loader类Stage类Sprite类MovieClip类1.影夹与精灵MovieClip类-importflash.display.MovieClip;

影片剪辑对象的ActionScript模板。属性如:影片的x,y坐标,缩放等。Sprite类-importflash.display.Sprite;

理解为不含时间轴上的影片剪辑,只使用代码操作对象,并不涉及时间轴和帧。例varmc:MovieClip=newMovieClip();//创建MovieClip实例Sprite/MovieClip常用属性:alpha:不透明度。0(完全透明)~1(完全不透明)Height、width:高度,以像素为单位。x、y:x、y坐标。scaleX、scaleY:水平、垂直缩放比例(百分比)。rotation:旋转,以度为单位。0~180顺时针;0~-180逆时针,其余值通过加或减360获得上述范围内的值。visible:对象是否可见,Boolean值。

MovieClip类的方法与定位影片播放相同,如gotoAndPlay、gotoAndStop、prevFrame、play等。2.Flash中的颜色24位色:0xRRGGBB

设已知3基色,color24=red<<16|green<<8|blue;32位色:0xAARRGGBBcolor32=alpha<<24|red<<16|green<<8|blue;FF不透明,00完全透明例设已知颜色color32,如何获取颜色基值?alpha=___________________________;red=___________________________;green=___________________________;blue=___________________________;3.绘图API-绘制线条,填充色,渐变填充的一些属性和方法。■clear()■lineStyle(width,color,alpha)■moveTo(x,y)■lineTo(x,y)■curveTo(x1,y1,x2,y2)■beginFill(color,alpha)■endFill()■beginGradientFill(fillType,colors,alphas,ratios,matrix)■drawCircle(x,y,radius)■drawEllipse(x,y,width,height)■drawRect(x,y,width,height)■drawRoundRect(x,y,width,height,ellipseWidth,

ellipseHeight)注:MovieClip和Sprite都可由graphics属性访问绘图API。绘制一个图形过程:

graphics.moveTo(参数) graphics.lineStyle(参数) graphics.beginFill(参数)

一系列的绘图API graphics.endFill例varmySprite:Sprite=newSprite();mySprite.graphics.beginFill(0xff0000);mySprite.graphics.drawCircle(100,100,40);mySprite.graphics.endFill();addChild(mySprite);标准坐标系Flash坐标系例绘制箭头的类package{importflash.display.Sprite;publicclassArrowextendsSprite{publicfunctionArrow() {init();}publicfunctioninit():void{graphics.lineStyle(1,0,1); graphics.beginFill(0xffff00); graphics.moveTo(50,75);graphics.lineTo(100,75); graphics.lineTo(100,50);graphics.lineTo(150,100); graphics.lineTo(100,150);graphics.lineTo(100,125); graphics.lineTo(50,125);graphics.lineTo(50,75); graphics.endFill();}}}例绘图应用程序package{ importflash.display.Sprite; importflash.events.MouseEvent; publicclassDrawingAppextendsSprite { publicfunctionDrawingApp() {init();} privatefunctioninit():void {graphics.lineStyle(1); stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp); }

privatefunctiononMouseDown(event:MouseEvent):void{graphics.moveTo(mouseX,mouseY); stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);}

privatefunctiononMouseUp(event:MouseEvent):void{ stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);}

privatefunctiononMouseMove(event:MouseEvent):void{ graphics.lineTo(mouseX,mouseY); }}}§4常用数学函数1.Math类

-包含表示常用数学函数和值四舍五入:trace(Math.round(204.499));//显示:204产生0-1的浮点随机数:Math.random()计算平方根:Math.sqrt(25)计算绝对值:Math.abs(25)求幂:Math.pow(2,3)//23三角函数 弧度=角度*Math.PI/180

角度=弧度*180/Math.PIFlash的角度-300300Math.sin(30*Math.PI/180) 0.499999999999999Math.cos(-30*Math.PI/180)Math.tan(-30*Math.PI/180)Math.asin(0.5)*180/Math.PI 30Math.atan(0.5)*180/Math.PI是角B还是角D呢?Math.atan2(y,x)trace(Math.atan2(1,2)*180/Math.PI);输出:26.565051177078trace(Math.atan2(-1,-2)*180/Math.PI);输出:–153.434948822922.26.57计算两点间距离://pointsarex1,y1andx2,y2//canbesprite/movieclippositions,mousecoordinates,etc.dx=x2–x1;dy=y2–y1;dist=________________________________;向鼠标旋转(或向某点旋转)://substitutemouseX,mouseYwiththex,ypointtorotatetodx=mouseX-sprite.x;dy=mouseY-sprite.y;sprite.rotation=____________________________________________

;例让箭头随鼠标旋转package{ importflash.display.Sprite; importflash.events.Event; publicclassRotateToMouseextendsSprite {privatevararrow:Arrow; publicfunctionRotateToMouse() {init();} privatefunctioninit():void {arrow=newArrow(); addChild(arrow); arrow.x=stage.stageWidth/2; arrow.y=stage.stageHeight/2; addEventListener(Event.

ENTER_FRAME,onEnterFrame); } publicfunctiononEnterFrame(event:Event):void {vardx:Number=mouseX-arrow.x; vardy:Number=mouseY-arrow.y; varradians:Number=_________________; arrow.rotation=radians*180/Math.PI; } }}例平滑的上下运动

Ball.as

package{importflash.displa

温馨提示

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

评论

0/150

提交评论