主要是利用FlashActionscript一步一步学习Flash高射炮简单游戏的制作过程,最终效果只是一个简单的演示,如果你有兴趣可以继续深入学习!(教程最后页提供演示动画的源程序下载)
第一步:首先简单的制作一个鼠标动画,绘制一个鼠标的图,自己定。然后选择第一帧输入下面代码:
Mouse.hide();
attachMovie("crosshair","crosshair",1);
crosshair.onEnterFrame=function(){
this._x=_xmouse;
this._y=_ymouse;
};
第二步:绘制一个坦克,分成两部分,如下面:
绘制坦克
把下面的命名实例名为tank。代码如下:
Mouse.hide();
attachMovie("crosshair","crosshair",1);
attachMovie("tank","tank",2,{_x:230,_y:350});
crosshair.onEnterFrame=function(){
this._x=_xmouse;
this._y=_ymouse;
};
tank.onEnterFrame=function(){
mousex=_xmouse-this._x;
mousey=(_ymouse-this._y)*-1;
angle=Math.atan(mousey/mousex)/(Math.PI/180);
if(mousex<0){
angle+=180;
}
if(mousex>=0&&mousey<0){
angle+=360;
}
this.cannon._rotation=angle*-1;
};
第三步:我这里设置转动的一定的角度。
Mouse.hide();
attachMovie("crosshair","crosshair",1);
attachMovie("tank","tank",2,{_x:230,_y:350});
crosshair.onEnterFrame=function(){
this._x=_xmouse;
this._y=_ymouse;
};
tank.onEnterFrame=function(){
mousex=_xmouse-this._x;
mousey=(_ymouse-this._y)*-1;
angle=Math.atan(mousey/mousex)/(Math.PI/180);
if(mousex<0){
angle+=180;
}
if(mousex>=0&&mousey<0){
angle+=360;
}
if(angle>160){
angle=160;
}
if(angle<20){
angle=20;
}
this.cannon._rotation=angle*-1;
};
然后是计算开火的目标:
Mouse.hide();
attachMovie("crosshair","crosshair",1);
attachMovie("tank","tank",2,{_x:230,_y:350});
crosshair.onEnterFrame=function(){
this._x=_xmouse;
this._y=_ymouse;
};
tank.onEnterFrame=function(){
mousex=_xmouse-this._x;
mousey=(_ymouse-this._y)*-1;
angle=Math.atan(mousey/mousex)/(Math.PI/180);
if(mousex<0){
angle+=180;
}
if(mousex>=0&&mousey<0){
angle+=360;
}
if(angle>160){
angle=160;
}
if(angle<20){
angle=20;
}
firepower=Math.sqrt(mousex*mousex+mousey*mousey);
if(firepower>200){
firepower=200;
}
this.cannon._rotation=angle*-1;
};
开火的制作:
Mouse.hide();
attachMovie("crosshair","crosshair",1);
attachMovie("tank","tank",2,{_x:230,_y:350});
crosshair.onEnterFrame=function(){
this._x=_xmouse;
this._y=_ymouse;
};
tank.onEnterFrame=function(){
mousex=_xmouse-this._x;
mousey=(_ymouse-this._y)*-1;
angle=Math.atan(mousey/mousex)/(Math.PI/180);
if(mousex<0){
angle+=180;
}
if(mousex>=0&&mousey<0){
angle+=360;
}
if(angle>160){
angle=160;
}
if(angle<20){
angle=20;
}
firepower=Math.sqrt(mousex*mousex+mousey*mousey);
if(firepower>200){
firepower=200;
}
this.cannon._rotation=angle*-1;
};
functiononMouseDown(){
angle=tank.cannon._rotation-1
start_ball_x=tank._x+48*Math.cos(angle*Math.PI/180);
start_ball_y=tank._y+48*Math.sin(angle*Math.PI/180);
attachMovie("cannonball","cannonball",3,{_x:start_ball_x,_y:start_ball_y});
}
开火出来炮弹:
Mouse.hide();
attachMovie("crosshair","crosshair",1);
attachMovie("tank","tank",2,{_x:230,_y:350});
crosshair.onEnterFrame=function(){
this._x=_xmouse;
this._y=_ymouse;
};
tank.onEnterFrame=function(){
mousex=_xmouse-this._x;
mousey=(_ymouse-this._y)*-1;
angle=Math.atan(mousey/mousex)/(Math.PI/180);
if(mousex<0){
angle+=180;
}
if(mousex>=0&&mousey<0){
angle+=360;
}
if(angle>160){
angle=160;
}
if(angle<20){
angle=20;
}
firepower=Math.sqrt(mousex*mousex+mousey*mousey);
if(firepower>200){
firepower=200;
}
this.cannon._rotation=angle*-1;
};
functiononMouseDown(){
angle=tank.cannon._rotation-1;
start_ball_x=tank._x+48*Math.cos(angle*Math.PI/180);
start_ball_y=tank._y+48*Math.sin(angle*Math.PI/180);
cannonball_fired=attachMovie("cannonball","cannonball_"+_root.getNextHighestDepth(),_root.getNextHighestDepth(),{_x:start_ball_x,_y:start_ball_y});
cannonball_fired.dirx=Math.cos(angle*Math.PI/180)*firepower;
cannonball_fired.diry=Math.sin(angle*Math.PI/180)*firepower;
cannonball_fired.onEnterFrame=function(){
this._x+=this.dirx/50;
this._y+=this.diry/50;
};
}
最后再加以详细的限制一下炮弹:
Mouse.hide();
gravity=2;
attachMovie("crosshair","crosshair",1);
attachMovie("tank","tank",2,{_x:230,_y:350});
crosshair.onEnterFrame=function(){
this._x=_xmouse;
this._y=_ymouse;
};
tank.onEnterFrame=function(){
mousex=_xmouse-this._x;
mousey=(_ymouse-this._y)*-1;
angle=Math.atan(mousey/mousex)/(Math.PI/180);
if(mousex<0){
angle+=180;
}
if(mousex>=0&&mousey<0){
angle+=360;
}
if(angle>160){
angle=160;
}
if(angle<20){
angle=20;
}
firepower=Math.sqrt(mousex*mousex+mousey*mousey);
if(firepower>200){
firepower=200;
}
this.cannon._rotation=angle*-1;
};
functiononMouseDown(){
angle=tank.cannon._rotation-1;
start_ball_x=tank._x+48*Math.cos(angle*Math.PI/180);
start_ball_y=tank._y+48*Math.sin(angle*Math.PI/180);
cannonball_fired=attachMovie("cannonball","cannonball_"+_root.getNextHighestDepth(),_root.getNextHighestDepth(),{_x:start_ball_x,_y:start_ball_y});
cannonball_fired.dirx=Math.cos(angle*Math.PI/180)*firepower;
cannonball_fired.diry=Math.sin(angle*Math.PI/180)*firepower;
cannonball_fired.onEnterFrame=function(){
this.diry+=gravity;
this._x+=this.dirx/50;
this._y+=this.diry/50;
};
}