Показать сообщение отдельно
Старый 23.01.2014, 00:55
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 18  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
Код AS3:
package 
{
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
 
	public class Orbit extends Sprite 
	{
		private var _target:Shape;
		private var _frameRate:Number;
		private var _isNoClick:Boolean;
 
		public function Orbit() 
		{
			stage.color = 0x000000;
			_frameRate = stage.frameRate;
 
			_target = new Shape();
			_target.graphics.beginFill(0x82AC28);
			_target.graphics.drawCircle(0, 0, 3);
			_target.graphics.endFill();
			_target.x = 700;
			_target.y = 300;
			super.addChild(_target);
 
			_circle = new Shape();
			_isNoClick = true;
			stage.addEventListener(MouseEvent.CLICK, stage_click);
		}
 
		private const CIRCLE_RADIUS:uint = 200;
 
		private var _circle:Shape;
 
		private var _startX:Number;
		private var _startY:Number;
		private var _finishY:Number;
		private var _finishX:Number;
		private function stage_click(event:MouseEvent):void 
		{
			if (_isNoClick)
			{
				_circle.graphics.lineStyle(1, 0xCFBB2C);
				_circle.graphics.drawCircle(0, 0, 200);
				_circle.graphics.lineStyle(1, 0xE81313);
				_circle.graphics.drawCircle(0, 0, 3);
				_circle.graphics.endFill();
				_circle.x = mouseX;
				_circle.y = mouseY;
				super.addChild(_circle);
 
				_startX = _circle.x;
				_startY = _circle.y;
 
				_finishX = _target.x-_startX;
				_finishY= _target.y-_startY;
 
 
				_isNoClick = false;
				_allTime = 0;
				stage.addEventListener(Event.ENTER_FRAME, stage_enterFrame);
 
			}
		}
		private var _allTime:Number;
		private var _duration:Number = 10;
		private function stage_enterFrame(event:Event):void 
		{
			var time:Number = 1 * 0.001 * _frameRate;
			_allTime += time;
			var ratio:Number = _allTime / _duration;
 
			_circle.graphics.clear();
			_circle.graphics.lineStyle(1, 0xCFBB2C);
			_circle.graphics.drawCircle(0, 0, CIRCLE_RADIUS - CIRCLE_RADIUS/100*ratio*100);
			_circle.graphics.lineStyle(1, 0xE81313);
			_circle.graphics.drawCircle(0, 0, 3);
			_circle.graphics.endFill();
 
			if (ratio >= 1)
			{
				ratio = 1;
				_isNoClick = true;
				stage.removeEventListener(Event.ENTER_FRAME, stage_enterFrame);
				super.removeChild(_circle);
			}
 
			_circle.x = ratio * _finishX + _startX;
			_circle.y = ratio * _finishY + _startY;
 
		}
	}
 
}