マウス制御素子移動ベルト緩動マウスクリック発射弾

4344 ワード

/*   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);

				}

			}



		}





	}

}