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

Регистрация: Mar 2013
Сообщений: 1,864
Если совсем просто, то вот так -
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
 
	public class MoveSpeed extends Sprite 
	{
		private var _targets:Array;
 
		public function MoveSpeed() 
		{
			_targets = [];
 
			//радиус окружности
			_radius = 100;
			//длина окружности
			var straightLength:Number = 2 * Math.PI * _radius;
			//центр окружности
			_center = new Point(180, 180);
 
			//прямая равная длине окружности
			var straight:Sprite = new Sprite();
			straight.graphics.lineStyle(2, 0x55EA64);
			straight.graphics.moveTo(10, 50);
			straight.graphics.lineTo(10 + straightLength, 50);
			addChild(straight);
 
			//окружность
			var circle:Sprite = new Sprite();
			circle.graphics.lineStyle(2, 0x55EA64);
			circle.graphics.drawCircle(0, 0, _radius);
			circle.graphics.endFill();
			circle.x = _center.x;
			circle.y = _center.y;
			addChild(circle);
 
			//два кружка которые будем двигать
			var target0:Sprite = new Sprite();
			target0.graphics.beginFill(0xEBC154);
			target0.graphics.drawCircle(0, 0, 10);
			target0.graphics.endFill();
			target0.x = 400;
			target0.y = 300;
			addChild(target0);
 
			var target1:Sprite = new Sprite();
			target1.graphics.beginFill(0xEBC154);
			target1.graphics.drawCircle(0, 0, 10);
			target1.graphics.endFill();
			target1.x = 10;
			target1.y = 50;
			addChild(target1);
 
			_targets[0] = target0;
			_targets[1] = target1;
 
 
			//теперь настраиваем анимацию для вращения по окружности
			_start0 = target0.rotation;//начальное значение
			_finish0 = 360 - _start0//конечное значение минус начальное
 
			//настройки для перемещения по прямой
			_start1 = target1.x;
			_finish1 = 10 + straightLength - _start1;
 
			//время за которое должна выполнится анимация
			_delay = 6;
			//узнаем кол-во кадров
			_frameRate = stage.frameRate;
			stage.addEventListener(Event.ENTER_FRAME, stage_enterFrameHandler);
		}
		private var _allTime:Number = 0;
		private var _delay:Number;
		private var _angle:Number = 360;
		private var _angleRatio:Number = 0;
		private var _start0:Number;
		private var _finish0:Number;
		private var _start1:Number;
		private var _finish1:Number;
		private var _center:Point;
		private var _radius:Number;
		private var _frameRate:Number;
		private function stage_enterFrameHandler(event:Event):void 
		{
			var time:Number = 1 / 1000 * _frameRate;
			_allTime += time / _delay;
			var angleRatio:Number = _allTime * _finish0 + _start0;
			var lineRatio:Number = _allTime * _finish1 + _start1;
 
			_targets[0].x = Math.cos(angleRatio * Math.PI / 180) * _radius + _center.x;
			_targets[0].y = Math.sin(angleRatio  * Math.PI / 180) * _radius + _center.y;
			_targets[1].x = lineRatio;
 
			if (_allTime >= 1)
			{
				_allTime = 0;
			}
		}
 
	}
 
}
anim.swf   (1.8 Кб)
Вложения
Тип файла: swf anim.swf (1.8 Кб, 106 просмотров)