/*文档类 库中有一个ball元件*/
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends Sprite
{
private var ball:Ball;
private var speed:Number;
private var easing:Number = 0.05;
private var mcArr:Array = new Array ;
private var fire_flag:Boolean;
private var bulletArr:Array = new Array ;
private var bullet:Bullet;
private var time:int;
private var bradians:Number;
public function Main()
{
addEventListener(Event.ADDED_TO_STAGE,addedToStage);
}
private function addedToStage(e:Event):void
{
init();
}
private function init():void
{
speed = 3;
ball = new Ball ;
ball.x = 50;
ball.y = 50;
addChild(ball);
stage.addEventListener(MouseEvent.MOUSE_DOWN,_onMouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP,_onMouseUp);
addEventListener(Event.ENTER_FRAME,onEnter);
}
private function _onMouseDown(e:MouseEvent):void
{
fire_flag = true;
}
private function _onMouseUp(e:MouseEvent):void
{
time = 0;
fire_flag = false;
return;
}
private function onEnter(e:Event):void
{
if (fire_flag)
{
if (time == 0)
{
fire();
}
time++;
if (time % 5 == 0)
{
fire();
}
}
var dx:Number = mouseX - ball.x;
var dy:Number = mouseY - ball.y;
var radians:Number = Math.atan2(dy,dx);
ball.rotation = radians * 180 / Math.PI;
//var vx:Number = Math.cos(radians) * speed;
//var vy:Number = Math.sin(radians) * speed;
var vx:Number = dx * easing;
var vy:Number = dy * easing;
//trace(ball.rotation);
ball.x += vx;
ball.y += vy;
}
private function fire():void
{
var dx:Number = mouseX - ball.x;
var dy:Number = mouseY - ball.y;
var radians:Number = Math.atan2(dy,dx);
//var angle:Number = radians * 180 / Math.PI;
//radians=angle*Math.PI/180;
bullet = new Bullet(radians,10,10,0XFF0000);
bullet.x = ball.x;
bullet.y = ball.y;
addChild(bullet);
bulletArr.push(bullet);
}
}
}
/*子弹类*/
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Stage;
public class Bullet extends Sprite
{
private var _width:Number;
private var _height:Number;
private var color:uint;
private var bullet:Bullet;
private var speed:Number;
private var radians:Number;
private var MinX:int;
private var MaxX:int;
private var MinY:int;
private var MaxY:int;
public function Bullet(radians:Number,_width:Number=10,_height:Number=10,color:uint=0XFF0000)
{
addEventListener(Event.ADDED_TO_STAGE,addedToStage);
this._width = _width;
this._height = _height;
this.color = color;
this.radians = radians;
}
private function addedToStage(e:Event):void
{
MinX = this.width / 2;
MaxX = stage.stageWidth - this.width / 2;
MinY = this.height / 2;
MaxY = stage.stageHeight - this.height / 2;
speed = 20;
drawBullet();
addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}
private function drawBullet():void
{
graphics.beginFill(color);
graphics.drawRect(0,0,_width,_height);
graphics.endFill();
}
private function enterFrameHandler(e:Event):void
{
MoveAngle(radians);
movingRange();
}
private function MoveAngle(radians:Number):void
{
this.rotation = radians * 180 / Math.PI;
var vx:Number = Math.cos(radians) * speed;
var vy:Number = Math.sin(radians) * speed;
this.x += vx;
this.y += vy;
}
private function movingRange():void
{
if (parent)
{
if (this.x < MinX)
{
removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
parent.removeChild(this);
}
else if (this.x > MaxX)
{
removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
parent.removeChild(this);
}
else if (this.y < MinY)
{
removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
parent.removeChild(this);
}
else if (this.y > MaxY)
{
removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
parent.removeChild(this);
}
}
}
}
}