Показать сообщение отдельно
Старый 12.09.2013, 13:07
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 4  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Цитата:
Объект двигается по Х и окружности одновременно.
По вашей схеме объект не движется по Х и Y одновременно, он сначала продвигается по X, потом останавливается, совершает полный оборот, затем немного продвигается и снова останавливается для совершения полного оборота.

На самом деле ваша схема движения - обычная циклоида.
Название: 1-1269121721_tochkap.jpg
Просмотров: 578

Размер: 11.5 Кб
Уравнения для X и Y находятся тут

То есть
Код AS3:
package  
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.utils.getTimer;
	/**
	 * ...
	 * @author KumoKairo
	 */
	public class Trajectory extends Sprite
	{
		private var _elementDummy:Sprite;
		private var _previousTime:Number;
		private var _velocity:Number;
		private var _radius:Number;
		private var _cycles:uint;
 
		public function Trajectory() 
		{
			_elementDummy = new Sprite();
			_elementDummy.graphics.beginFill(0xFF0000);
			_elementDummy.graphics.drawCircle(0, 0, 15);
			addChild(_elementDummy);
 
			_previousTime = getTimer();
			_velocity = 0.02;
			_radius = 15;
			_cycles = 0;
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		private function onEnterFrame(e:Event):void 
		{
			var passedTime:Number = getTimer() - _previousTime - _cycles * 3000;
 
			_elementDummy.x = _radius * _velocity * passedTime - _radius * Math.sin(_velocity * passedTime);
			_elementDummy.y = _radius - _radius * Math.cos(_velocity * passedTime);
 
			if (_elementDummy.x > 800)
			{
				_cycles++;
			}
		}
 
	}
 
}
NewProject.swf   (4.9 Кб)
Вложения
Тип файла: swf NewProject.swf (4.9 Кб, 144 просмотров)