1、二维图形技术复习资料 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、层 选中飞机时的样子 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
3、{ 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
4、 //定义数字 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)
5、 //数字转换为字符串 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.CLIC
6、K,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)
7、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(thi
8、s).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
9、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:M
10、ouseEvent) { 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.Mov
11、ieClip; 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.rotat
12、ion+=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 Tim
13、er(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); } th
14、is.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(); } 显示倒计时 蓝色
15、按钮 stop_but(倒计时停止) 褐色按钮 restart_but(倒计时重新开始) mc 影片剪辑 图层四:首帧和末帧都只是一个进度条的框框 图层三代码: stop() 图层二:遮罩层,创建的是补间形状,红色的从无到有 图层一:整个都是一个彩虹条 图层一二分别做完以后再设置遮罩层 8.键盘事件 import flash.events.KeyboardEvent; import flash.ui.Keyboard; const KEY_LEFT:uint=37; const KEY_RIGHT:ui
16、nt=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) {
17、
Object(this).plane_mc.x-=speed;}
else Object(this).plane_mc.x=stage.stageWidth;
}
if(keynumber==KEY_RIGHT)
{
if(Object(this).plane_mc.x 18、机 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);
v 19、ar 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_mov 20、ieclip.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);
addChil 21、d(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.grap 22、hics.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 23、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_text 24、field.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);
25、
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.g 26、etSeconds();
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.te 27、xt=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_v 28、alue*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" 29、"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_t 30、ext.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=CreatTextFie 31、ld(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,8 32、0,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 33、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
34、 {
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;
}
35、
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);
36、
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 37、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()
{
38、
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);
39、
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);
蓝色按钮:back 40、Btn
褐色按钮: 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)
funct 41、ion 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 42、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.addEventLis 43、tener(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( 44、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动画
45、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_FRAM 46、E,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 也就是那个影片剪辑的圆啦
i 47、f(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();
funct 48、ion 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;
//子弹运动速度 49、相当图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=bullet 50、x+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






