Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 01.08.2011, 21:48
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 10  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
 
	public class Main extends Sprite
	{
		static public const STAGE_WIDTH:int = 800;
		static public const STAGE_HEIGHT:int = 600;
 
		private var $mover:Sprite;
		private var prevPhi:Number;
		private var $rotation:Number;
 
		public function Main() 
		{
			$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 
		{
			prevPhi = Math.atan2(stage.mouseY - $mover.y, stage.mouseX - $mover.x);
			$rotation = $mover.rotation;
			$mover.addEventListener(MouseEvent.MOUSE_MOVE, moverMouseMoveHandler);
		}
 
		private function moverMouseUpHandler(e:MouseEvent):void 
		{
			$mover.removeEventListener(MouseEvent.MOUSE_MOVE, moverMouseMoveHandler);
		}
 
		private function moverMouseMoveHandler(e:MouseEvent):void 
		{
			const speed:Number = 0.3;
			var phi:Number = Math.atan2(stage.mouseY - $mover.y, stage.mouseX - $mover.x);
			var step:Number = phi - prevPhi;
			if (step > Math.PI)
				step -= 2 * Math.PI;
			else if (step < -Math.PI)
				step += 2 * Math.PI;
 
			//тут можно делать с шагом что угодно
			step *= speed;
 
			$rotation += step * 180 / Math.PI;
 
			prevPhi = phi;
 
			$mover.rotation = $rotation;
		}
 
	}
 
}
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 01.08.2011 в 22:11.
Создать новую тему   Часовой пояс GMT +4, время: 22:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:03.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.