Показать сообщение отдельно
Старый 01.08.2011, 04:37
AlliAS вне форума Посмотреть профиль Отправить личное сообщение для AlliAS Найти все сообщения от AlliAS
  № 1  
Ответить с цитированием
AlliAS
 
Аватар для AlliAS

Регистрация: Aug 2007
Сообщений: 168
Question Вращение круга мышью с регулируемой скоростью

Здравствуйте.

Необходимо реализовать реалистичное вращение круга мышью, причем так, чтобы "тугость" (скорость) этого вращения можно было регулировать, и чтобы вращение происходило в направлении движения мыши.
Вот код который есть сейчас, но он не позволяет регулировать скорость, да и вращение происходит слишком резко

Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
 
	public class Spinner extends Sprite
	{
		static public const STAGE_WIDTH:int = 800;
		static public const STAGE_HEIGHT:int = 600;
 
		private var $mover:Sprite;
		private var $lastX:Number;
		private var $lastY:Number;
 
		public function Spinner() 
		{
			$mover = new Sprite();
 
			var mx:Matrix = new Matrix();
			mx.createGradientBox(STAGE_HEIGHT / 2, STAGE_HEIGHT / 2, Math.PI / 2);
			$mover.graphics.beginGradientFill('linear', [0xFF0000, 0x0000FF], [1, 1], [0, 255], mx);
			$mover.graphics.drawCircle(0, 0, STAGE_HEIGHT / 2);
			$mover.graphics.endFill();
 
			$mover.x = STAGE_WIDTH / 2;
			$mover.y = STAGE_HEIGHT / 2;
			this.addChild($mover);
 
			this.addEventListener(Event.ADDED_TO_STAGE, thisAddedToStageHandler);			
		}
 
		private function thisAddedToStageHandler(e:Event):void 
		{
			this.removeEventListener(Event.ADDED_TO_STAGE, thisAddedToStageHandler);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, moverMouseDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, moverMouseUpHandler);
		}
 
		private function moverMouseDownHandler(e:MouseEvent):void 
		{
			$mover.addEventListener(MouseEvent.MOUSE_MOVE, moverMouseMoveHandler);
		}
 
		private function moverMouseUpHandler(e:MouseEvent):void 
		{
			$mover.removeEventListener(MouseEvent.MOUSE_MOVE, moverMouseMoveHandler);
		}
 
		private function moverMouseMoveHandler(e:MouseEvent):void 
		{
			var thisX:Number = stage.mouseX - $mover.x;
			var thisY:Number = stage.mouseY - $mover.y;
			$mover.rotation = Math.atan2($lastY - thisY, $lastX - thisX) * 180 / Math.PI;
			$lastX = thisX;
			$lastY = thisY;
		}
 
	}
 
}
Подскажите что нужно добавить.