收藏 分销(赏)

【二维图形技术】上机复习资料.doc

上传人:仙人****88 文档编号:12020772 上传时间:2025-08-28 格式:DOC 页数:26 大小:884.50KB 下载积分:10 金币
下载 相关 举报
【二维图形技术】上机复习资料.doc_第1页
第1页 / 共26页
【二维图形技术】上机复习资料.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
二维图形技术复习资料 By BW 1.飞机沿轨迹运动 import flash.events.MouseEvent; stop(); plane.stop(); Object(this).Butn.addEventListener(MouseEvent.CLICK,airplanePlay); function airplanePlay(e:MouseEvent) { gotoAndPlay(2); plane.play(); } 引导层是轨迹,飞机是被引导层 选中飞机时的样子 2.计算两点距离 import includes.CPoint; var point1:CPoint=new CPoint(12,30,50); var point2:CPoint=new CPoint(2,3,5); trace("点1的坐标(",point1.xx,",",point1.yy,",",point1.zz,")"); trace("点2的坐标(",point2.xx,",",point2.yy,",",point2.zz,")"); function Distance(p1:CPoint,p2:CPoint):Number { var xvalue=p1.xx-p2.xx; var yvalue=p1.yy-p2.yy; var zvalue=p1.zz-p2.zz; var dis:Number=Math.sqrt(xvalue*xvalue+yvalue*yvalue+zvalue*zvalue); return dis; } var disvalue=Distance(point1,point2); trace("the distance of between p1 and p2 is",disvalue); 3.简单数据类型1 var num:int=6789 //定义数字 var temp:int=num //取得数字的拷贝 var a:int=temp/1000 //得到千位数 temp=temp-a*1000 //去掉千位 var b:int=temp/100 //得到百位数 temp=temp-b*100 //去掉百位 var c:int=temp/10 //得到十位数 temp=temp-c*10 //去掉十位 var d:int=temp //得到个位数 trace(a,b,c,d) 4.简单数据类型2 var num:int=6789 //定义数字 var str=String(num) //数字转换为字符串 var a:int=str.charAt(0) //取得索引0处的字符即6 var b:int=str.charAt(1) //取得索引1处的字符即7 var c:int=str.charAt(2) //取得索引2处的字符即8 var d:int=str.charAt(3) //取得索引3处的字符即9 trace(a,b,c,d) //输出数位 5.按钮事件 import flash.events.MouseEvent; Object(this).left_button.addEventListener(MouseEvent.CLICK,movex); //定义movex函数 var speed:int=5; function movex(e:MouseEvent):void { Object(this).car_movieclip.x-=speed; } Object(this).right_button.addEventListener(MouseEvent.CLICK,movexright); function movexright(e:MouseEvent) { Object(this).car_movieclip.x+=speed; // trace(Object(this).car_movieclip.x); if(Object(this).car_movieclip.x>stage.stageWidth) { Object(this).car_movieclip.x=-250; } } //trace(stage.stageWidth,stage.stageHeight); Object(this).alpha2_button.addEventListener(MouseEvent.CLICK,reducealpha); function reducealpha(e:MouseEvent) { if(Object(this).car_movieclip.alpha>0) { Object(this).car_movieclip.alpha-=0.1; }else Object(this).car_movieclip.alpha=1; } Object(this).alpha1_button.addEventListener(MouseEvent.CLICK,addalpha); function addalpha(e:MouseEvent) { if(Object(this).car_movieclip.alpha<1) { Object(this).car_movieclip.alpha+=0.1; } } Object(this).rotation_button.addEventListener(MouseEvent.CLICK,rotationx); function rotationx(e:MouseEvent) { Object(this).car_movieclip.rotationX+=15; } Object(this).visible_button.addEventListener(MouseEvent.CLICK,hidemovieclip); function hidemovieclip(e:MouseEvent) { if(Object(this).car_movieclip.visible==true) { Object(this).car_movieclip.visible=false; }else Object(this).car_movieclip.visible=true; } 选中汽车 alpha+ 的名字是 alpha1_button alpha- 的名字是 alpha2_button hide 的名字是 visible_button 6.创建影片剪辑类 import flash.display.MovieClip; import flash.events.MouseEvent; var i:int; for(i=1;i<=3;i++) { var mc:MovieClip=new pigtopig; this.addChild(mc); mc.x=i*150; mc.y=200; mc.addEventListener(MouseEvent.CLICK,clickHandler); } function clickHandler(e:MouseEvent):void { e.target.stop(); e.target.rotation+=20; } gif的图片,动画点击时候则定在点击的时候 7.倒计时动画 import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.MouseEvent; var anmationtime:Number=30; var repeatnumber:int=mc.totalFrames; var timeinterval:Number=anmationtime/repeatnumber*1000; var my_timer:Timer=new Timer(timeinterval,repeatnumber); my_timer.start(); my_timer.addEventListener(TimerEvent.TIMER,onplay); function onplay(e:TimerEvent) { mc.nextFrame(); var countnumber:int=my_timer.currentCount; var t:Number=30-countnumber*timeinterval/1000; this.time_text.text=t.toFixed(1); } this.restart_but.addEventListener(MouseEvent.CLICK,restart); function restart(e:MouseEvent) { mc.gotoAndPlay(1); my_timer.reset(); my_timer.start(); } Object(this).stop_but.addEventListener(MouseEvent.CLICK,stopplay); function stopplay(e:MouseEvent) { my_timer.stop(); } 显示倒计时 蓝色按钮 stop_but(倒计时停止) 褐色按钮 restart_but(倒计时重新开始) mc 影片剪辑 图层四:首帧和末帧都只是一个进度条的框框 图层三代码: stop() 图层二:遮罩层,创建的是补间形状,红色的从无到有 图层一:整个都是一个彩虹条 图层一二分别做完以后再设置遮罩层 8.键盘事件 import flash.events.KeyboardEvent; import flash.ui.Keyboard; const KEY_LEFT:uint=37; const KEY_RIGHT:uint=39; Object(this).plane_mc.stop(); var speed:int=5; stage.addEventListener(KeyboardEvent.KEY_DOWN,moving); function moving(e:KeyboardEvent) { var keynumber:uint=e.keyCode; trace(keynumber); if(keynumber==KEY_LEFT) { if(Object(this).plane_mc.x>-Object(this).plane_mc.width) { Object(this).plane_mc.x-=speed;} else Object(this).plane_mc.x=stage.stageWidth; } if(keynumber==KEY_RIGHT) { if(Object(this).plane_mc.x<stage.stageWidth) { Object(this).plane_mc.x+=speed;} else Object(this).plane_mc.x=-Object(this).plane_mc.width; } } 选中飞机 plane_mc 影片剪辑中的飞机 每一帧的螺旋桨都不是同样的角度,整体就是一个螺旋桨在动的gif动画 9.按钮图片切换 import flash.events.MouseEvent; import flash.display.MovieClip; import flash.display.Bitmap; import flash.display.BitmapData; Object(this).t_shirt_button.addEventListener(MouseEvent.CLICK,loadt_shirt); var pic_movieclip:MovieClip=new MovieClip(); function loadt_shirt(e:MouseEvent) { var bitmapsource:BitmapData=new shirt(240,216); pic_movieclip.graphics.beginBitmapFill(bitmapsource); pic_movieclip.graphics.drawRect(0,0,240,216); addChild(pic_movieclip); pic_movieclip.x=100; pic_movieclip.y=50; } Object(this).kuzi_button.addEventListener(MouseEvent.CLICK,loadt_kuzi); function loadt_kuzi(e:MouseEvent) { var bitmapsource:BitmapData=new kuzibitmap(240,216); pic_movieclip.graphics.beginBitmapFill(bitmapsource); pic_movieclip.graphics.drawRect(0,0,240,216); addChild(pic_movieclip); pic_movieclip.x=100; pic_movieclip.y=50; } Object(this).bag_button.addEventListener(MouseEvent.CLICK,loadbag); function loadbag(e:MouseEvent) { var bitmapsource:BitmapData=new Cbag(240,216); pic_movieclip.graphics.beginBitmapFill(bitmapsource); pic_movieclip.graphics.drawRect(0,0,240,216); addChild(pic_movieclip); pic_movieclip.x=100; pic_movieclip.y=50; } 选中上衣:按钮 t_shirt_button 选中裤子:按钮 kuzi_button 选中包包:按钮 bag_button 10.电子时钟 import flash.text.TextField; import flash.events.Event; function creatTextField(text_x:Number,text_y:Number,text_width:Number,text_height:Number):TextField { var my_textfield:TextField=new TextField(); my_textfield.x=text_x; my_textfield.y=text_y; my_textfield.height=text_height; my_textfield.width=text_width; my_textfield.textColor=0xff0000; my_textfield.border=true; //my_textfield.autoSize=" "; //my_textfield.autoSize = TextFieldAutoSize.CENTER; addChild(my_textfield); return my_textfield; } var date_text:TextField=creatTextField(50,200,100,50); var time_text:TextField=creatTextField(50,260,100,50); var week_text:TextField=creatTextField(50,320,100,50); var my_date=new Date(); var year_value=my_date.getFullYear(); var month_value=my_date.getMonth()+1; var day_value=my_date.getDate(); date_text.text=year_value+"-"+month_value+"-"+day_value; var hour_value=my_date.getHours(); var min_value=my_date.getMinutes(); var sec_value=my_date.getSeconds(); time_text.text=hour_value+":"+min_value+":"+sec_value; /*time_text.addEventListener(Event.ENTER_FRAME,updatetime); function updatetime(e:Event) { var uphour_value=my_date.getHours(); var upmin_value=my_date.getMinutes(); var upsec_value=my_date.getSeconds(); time_text.text=uphour_value+":"+upmin_value+":"+upsec_value; }*/ Var week_array:Array=new Array("sun","mon","tue","wed","thu","fri","sat"); var day_num=my_date.getDay(); week_text.text=week_array[day_num]; Object(this).hour_pin.rotation=hour_value*360/12; Object(this).minute_pin.rotation=min_value*360/60; Object(this).second_pin.rotation=sec_value*360/60; trace(hour_value); 图层三:时针分针和秒针 图层二:钟表盘 图层一:背景 三个指针名字:hour_pin second_pin minute_pin 三个影片剪辑 11.动态文本(和电子时钟显示时间差不多) import flash.text.TextFormatAlign; var dayofweek:Array=new Array("SUN","MON","TUS","WED","TUR","FRI","SAT"); var my_day:Date=new Date(); weekofnum.text=dayofweek[my_day.day];//利用文本框属性定义 function CreatTextField(xx:int,yy:int,wd:int,heigh:int):TextField { var dynamic_text:TextField=new TextField(); dynamic_text.x=xx; dynamic_text.y=yy; dynamic_text.width=wd; dynamic_text.height=heigh; dynamic_text.border=true; dynamic_text.textColor=0x0000ff; dynamic_text.background=true; dynamic_text.backgroundColor=0xffffff; dynamic_text.type=TextFieldType.DYNAMIC; addChild(dynamic_text); return dynamic_text; } var my_text:TextField=CreatTextField(50,50,80,30);//动态创建文本框 my_text.text=dayofweek[my_day.day]; var date_text:TextField=CreatTextField(50,100,80,30);//动态创建文本框 var month_number:Number=my_day.getMonth()+1; date_text.text=String(my_day.fullYear)+"-"+month_number+"-"+my_day.date; var time_text:TextField=CreatTextField(50,150,80,30); //动态创建文本框 time_text.text=my_day.getHours()+":"+my_day.getMinutes()+":"+my_day.getSeconds(); 第一帧只是一个选框 12.电子相册 this.stop(); btnCon(backBtn, 1); backBtn.addEventListener("click",onPlay); forwardBtn.addEventListener("click",onPlay); function onPlay(e:MouseEvent) { if(e.target==backBtn) { this.prevFrame() }else if(e.target==forwardBtn) { this.nextFrame() } btnCon(backBtn, 1); btnCon(forwardBtn, this.totalFrames); } function btnCon(obj, frameNum) { if (this.currentFrame == frameNum) { obj.alpha =.5 obj.enabled = false; } else { obj.alpha =1 obj.enabled = true; } } button层 上一张和下一张的按钮 bg层 按钮后面的灰色背景条(只是个装饰) Picture层 每一帧都是一张背景图案 上一张的按钮: backBtn 下一张的按钮:forwardBtn 13.函数参数和调用 第一个as: trace(this.speed); 第二个as: function Max(x:int,y:int):int { if(x>y) return x; return y; } trace(Max(45,80)); function onClick(e:MouseEvent) { mc.x+=5; } mc.addEventListener("click",onClick); function traceMsg():void { trace("this is a function"); } function refeFunc(f:Function):void { f(); } refeFunc(traceMsg); var a:int= 1; trace("函数调用前,实参a="+a); test(a); trace("函数调用后,实参a="+a); function test(x):void { var y:int; x += 5; trace("调用函数中,形参x="+x); } //建立一个对象 var person:Object = new Object() //动态创建属性age person.age=20; trace("函数调用前,实参person.age="+person.age); test1(person); trace("函数调用后,实参person.age="+person.age); function test1(per:Object):void { per.age = 10; //修改对象的age属性 trace("函数调用中,形参per.age="+per.age); } function test2(y:int,x:int=0):Boolean { return x>y; } trace(test2(20)); trace(test2(15,5)); /*var speed:int=10; trace(this.speed);*/ var speed:Number=5 onMove() function onMove() { trace(this.speed)//5 var speed:Number=6 trace(speed)//6 trace(this.speed)//5 } 图层二其实就呢个蓝色的框框,就是mc啦,还是个影片剪辑 14.函数定义 第一个as: function area(r:*):Number { var b:Boolean=r is Number; if(!b) return NaN; return Math.PI*r*r; } var a=area(10.5); trace(a); trace(area(7)); trace(area("str")); 第二个as: function btnCon(obj, frameNum) :void { if (this.currentFrame == frameNum) { obj.alpha =.5 obj.enabled = false; } else { obj.alpha =1 obj.enabled = true; } } btnCon(backBtn,1); btnCon(forwardBtn,this.totalFrames); 蓝色按钮:backBtn 褐色按钮: forwardBtn 15.绘图函数 this.graphics.lineStyle(5) this.graphics.moveTo(250,0) this.graphics.lineTo(350,100) root.graphics.lineStyle(10) root.graphics.moveTo(350,0) root.graphics.lineTo(450,100) //画线 var sp1:Shape=new Shape(); this.addChild(sp1) drawLine(sp1.graphics) function drawLine(g:Graphics):void { with (g) { lineStyle(3); moveTo(200,0); curveTo(400,0,300,100); } } //绘制矩形 var sp:Shape=new Shape(); this.addChild(sp) drawrect(sp.graphics) function drawrect(g:Graphics):void { with (g) { beginBitmapFill(new Photo(0,0)) drawRect(0,0,187,365) } } //绘制填充颜色 var sp2:Shape=new Shape(); this.addChild(sp2); drawrectwithcolor(sp2.graphics); function drawrectwithcolor(g:Graphics):void { with (g) { beginFill(0xFF5599) drawRect(230,200,200,150) } } 16.按键显示动画 键盘输入一大堆乱七八糟的字幕会在屏幕上跳来跳去 stage.addEventListener(KeyboardEvent.KEY_DOWN,charpaly); function charpaly(e:KeyboardEvent):void { var keycode:uint=e.charCode; var str:String=String.fromCharCode(keycode); var txt:TextField=new TextField(); txt.text=str; txt.x=Math.random()*550; txt.y=Math.random()*300; txt.addEventListener(Event.ENTER_FRAME,txtmove); this.addChild(txt); } function txtmove(e:Event):void{ var txt1:TextField=e.target; txt1.y+=(Math.random()*550-txt1.y)/10; if(txt1.y<1) { txt1.removeEventListener(Event.ENTER_FRAME,txtmove); this.removeChild(txt1); } } 17.键盘事件+enterframe动画 W A S D控制图形上下左右运动 const KEY_A:uint=65; const KEY_D:uint=68; const KEY_S:uint=83; const KEY_W:uint=87; var key:Object=new Object var speed:Number=2 stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown) stage.addEventListener(KeyboardEvent.KEY_UP,keyUp) this.addEventListener(Event.ENTER_FRAME,test) function isDown(keyCode:uint):Boolean { return key[keyCode]?true:false } //按下事件侦听器 function keyDown(e:KeyboardEvent):void { key[e.keyCode]=true } //释放事件侦听器 function keyUp(e:KeyboardEvent):void { delete key[e.keyCode] } function test(e:Event):void { MC 也就是那个影片剪辑的圆啦 if(key[KEY_A]) { mc.x-=speed } if(key[KEY_D]) { mc.x+=speed } if(key[KEY_W]) { mc.y-=speed } if(key[KEY_S]) { mc.y+=speed } } 18.海盗射击 转动鼠标控制手的方向,单机鼠标发射一个子弹 var loop:Timer=new Timer(30); loop.addEventListener(TimerEvent.TIMER,armRotation); loop.start(); function armRotation(e:TimerEvent) { //var hand:MovieClip=arm; var radian=getRadian(arm.x,arm.y,this.mouseX,this.mouseY); arm.rotation=radian*180/Math.PI; trace(arm.x,arm.y); trace(stage.mouseX,stage.mouseY); } //子弹的初始位置 var bulletx:Number=arm.x; var bullety:Number=arm.y; //子弹运动速度,相当图8.37中的AB长度 var speed:Number=5 stage.addEventListener(MouseEvent.CLICK,shoot) function shoot(e:MouseEvent):void { //根据鼠标坐标和初始位置计算弧度,相当图8.35中的角BAC var radian:Number=getRadian(bulletx,bullety,this.mouseX,this.mouseY) //从库中创建子弹 var bullet:Bullet=new Bullet() //初始化子弹位置 bullet.x=bulletx+Math.cos(radian)*arm.width; bullet.y=bullety+Math.sin(radian)*arm.height; //根据余弦函数计算子弹的x速度,相当于计算图8.35中的AC bullet.spdx=Math.cos(radian)*speed //根据正弦函数计算子弹的y速度,相当于计算图8.35中的BC bullet.spdy=Math.sin(radian)*speed //注册enterFrame事件 bullet.addEventListener(Event.ENTER_FRAME,bulletMove) e.t
展开阅读全文

开通  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 

客服