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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 08.02.2009, 01:08
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 1  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
По умолчанию Поворот спрайта мышью

Нужно по нажатию на угол спрайта и удерживании мыши поварачивать спрайт в зависимости от текущей позиции мыши. Ну в общем как в фотошопе при FreeTransform картинка поворачиваеться так и мне нужно. Точка поворота цент (хотябы) лучшеб чтоб любая
Вот...
Код AS3:
public function AObject()
{	
	aRBox.addChild(aRPicture);
 
	addChild(aSprite);//спрайт который нужно поворачивать
	addChild(aRBox);//кнопочка в углу спрайта
 
	Active = isActive;
 
	aRBox.addEventListener(MouseEvent.MOUSE_DOWN, goRotate);
 
 
}
private function goRotate(event:MouseEvent):void
{
	isRotating = true;
 
	stage.addEventListener(MouseEvent.MOUSE_UP  , stopRotate);
	stage.addEventListener(MouseEvent.MOUSE_MOVE, onRotate  );
}
private function onRotate(event:MouseEvent):void
{
	if (!isRotating) {return}
 
	var midX:Number = aSprite.x + (aSprite.width / 2);
	var midY:Number = aSprite.y + (aSprite.height / 2);
 
	var dx:Number = stage.mouseX - aSprite.x;
	var dy:Number = stage.mouseY - aSprite.y;
 
	var Angle : Number = Math.atan2(dy, dx);
	Angle = (Angle*180/Math.PI);
	trace(Angle);
 
	rotateAround(midX, midY, Angle);
	event.updateAfterEvent();
}
private function stopRotate(event:MouseEvent):void
{
	isRotating = false;
 
	stage.removeEventListener(MouseEvent.MOUSE_UP  , stopRotate);
	stage.removeEventListener(MouseEvent.MOUSE_MOVE, onRotate  );
}
protected function rotateAround(offsetX:Number,offsetY:Number,toDegrees:Number):void 
{
	var relDegrees:Number = toDegrees - (this.rotation % 360);
	var relRadians:Number = Math.PI * relDegrees / 180;
	var M:Matrix = new Matrix(1, 0, 0, 1, 0, 0);
	M.rotate(relRadians);
	var AC:Point = new Point(offsetX, offsetY);
	AC = this.localToGlobal(AC);
	AC = this.parent.globalToLocal(AC);
	var AB:Point = new Point(this.x, this.y);
	var CB:Point = AB.subtract(AC);
	CB = M.transformPoint(CB);
	AB = AC.add(CB);
	trace(this.rotation);
	this.rotation = toDegrees;
	this.x = AB.x;
	this.y = AB.y;
}
Плиз помогите уже дня три маюсяа она переворачиваеться как хочет а не как мне надо

Добавлено через 6 минут
Или вот еще функция для поворота
Код AS3:
function rotateAroundCenter (ob:*, angleDegrees, point:Point) 
{
	var m:Matrix=ob.transform.matrix;
	m.tx -= point.x;
	m.ty -= point.y;
	m.rotate (angleDegrees*(Math.PI/180));
	m.tx += point.x;
	m.ty += point.y;
	ob.transform.matrix=m;
}
Но с ней тоже ниче не выходит. У мну складывается впечатление что я неправильно нахожу угол... но чет все перепробовал и иинет перерыл. Хелп ми плиз

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

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

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


 


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


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