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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 21.12.2011, 04:00
reQuiem вне форума Посмотреть профиль Отправить личное сообщение для reQuiem Найти все сообщения от reQuiem
  № 1  
Ответить с цитированием
reQuiem

Регистрация: Aug 2011
Сообщений: 29
По умолчанию плавный Drag rotation

Привет, пробую реализовать вращение объекта драгом.
Легко сделать, чтобы объект всегда следил за курсором, но мне нужно порционное движение при нажатой мышке.

Как когда пальцем крутишь пластинку на граммофоне.

Для этого напиал следующий код, но запутался, когда и что надо обновлять, подскажите, пожалуйста.

В интернете нашел только либо простые следящие драги, либо handle, которая по сути тоже просто прыгает на курсор при клике.

Попытался изобразить на схеме, что я делаю в коде.

В аттаче файл сцены.


[IMG]http://img440.**************/img440/9692/schemeh.jpg[/IMG]

Код AS3:
var CurX:Number=0;
var CurY:Number=0;
var GunX:Number=0;
var GunY:Number=0;
 
var lengthT:Number=0;
var heightT:Number=0;
 
var angleActual:Number=0;
var anglePast:Number=0;
var angle2rotate:Number=0;
 
 
 
 
GunX=round.x;
GunY=round.y;
 
 
var clicked:Boolean=false;
stage.addEventListener (MouseEvent.MOUSE_DOWN , mouseDownFunc);
 
function mouseDownFunc(e:MouseEvent):Boolean
{
	clicked=true;
 
	return clicked;
 
 
 
}
 
stage.addEventListener (MouseEvent.MOUSE_UP , mouseUpFunc);
 
function mouseUpFunc(e:MouseEvent):Boolean
{
	clicked=false;
 
	return clicked;
}
 
 
addEventListener(Event.ENTER_FRAME, frameUpdate);
function frameUpdate(e:Event):void  
{
	if(clicked)
	{
		lengthT=Math.floor(stage.mouseX-GunX);
		heightT=-(Math.floor(stage.mouseY-GunY));
 
		trace("lengthT",lengthT);
		trace("heightT",heightT);
 
		anglePast=angleActual;
		trace("anglePast",anglePast);
		angleActual=(Math.atan2(lengthT,heightT))*180/Math.PI;
		trace("аngleActual",angleActual);
		angle2rotate=angleActual-anglePast;
		trace("angle2rotate",angle2rotate);
		round.rotation+=angle2rotate;
 
	}
 
 
 
 
 
 
}

Спасибо!
Вложения
Тип файла: zip test1.zip (5.7 Кб, 49 просмотров)

Создать новую тему   Часовой пояс GMT +4, время: 10:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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