Показать сообщение отдельно
Старый 04.03.2010, 17:01
zakatnov вне форума Посмотреть профиль Отправить личное сообщение для zakatnov Найти все сообщения от zakatnov
  № 1  
Ответить с цитированием
zakatnov

Регистрация: Apr 2009
Сообщений: 43
По умолчанию Поворот двумерного объекта мышью

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

Код AS3:
private var moving:Boolean = false;
private var deltaAngle:Number; //стартовая разница между углом поворота объекта и мышью
 
private function rotateObject():void
{
	if(moving) // того чтобы при первом клике объект сразу не прыгал на угол под которым висит мышь
	{
		var newDelta:Number = Math.atan2(this.mouseY - layout_mc.y, this.mouseX - layout_mc.x) - layout_mc.rotation; //разница между углом поворота объекта и мышью
		if(deltaAngle < newDelta)
		{
			layout_mc.rotation += Math.abs(newDelta - deltaAngle);
		}
		else
		{
			if(deltaAngle > newDelta)
			{
				layout_mc.rotation -= Math.abs(newDelta - deltaAngle);
			}
		}
	}
	else
	{
		deltaAngle = Math.atan2(this.mouseY - layout_mc.y, this.mouseX - layout_mc.x) - layout_mc.rotation;
		moving = true;
	}
}
это "как-то" работает, но не совсем так как я ожидал, все крутится, но с артефактами и очень медленно, не успевает за мышью.

и второй, второстепенный вопрос, как отключить залипание мыши, например я нажал на объект, увел с него мышь, отжал, но объект думает что мышь все еще нажата, как это пофиксить?

вот пример с кодом который я привел:
http://zakatnov.ru/trash/circle.rar