
Код 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;
}
}
}