/*文档类 库中有一个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 _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,_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); } } } } }