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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.12.2008, 09:34
root.Unknown вне форума Посмотреть профиль Отправить личное сообщение для root.Unknown Найти все сообщения от root.Unknown
  № 1  
Ответить с цитированием
root.Unknown

Регистрация: Dec 2008
Сообщений: 20
По умолчанию Вращение объекта с помощью мыши

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

Написал функцию на вращение объекта с помощью нажатия кнопки по клавиатурным стрелкам, привожу пример ниже:

Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler);
 
private function keyPressedHandler(event:flash.events.KeyboardEvent):void {
			switch (event.keyCode) {
				case Keyboard.UP :
					myObj.roll +=2;
					break;
				case Keyboard.DOWN :
					myObj.roll -=2;
					break;
				case Keyboard.RIGHT :
					myObj.pan +=2;
					break;
				case Keyboard.LEFT :
					myObj.pan -=2;
					break;
			}
}
Как написать то же самое только для мыши? То есть я нажал и удерживаю левую кнопку мыши и могу вращать объект влево, право, верх, низ, только её отпускаю, всё вращать уже не могу...
Не ругайте сильно, для меня это действительно проблематично.


Последний раз редактировалось root.Unknown; 27.12.2008 в 09:38.
Старый 27.12.2008, 12:51
_Smirnoff вне форума Посмотреть профиль Отправить личное сообщение для _Smirnoff Найти все сообщения от _Smirnoff
  № 2  
Ответить с цитированием
_Smirnoff
 
Аватар для _Smirnoff

блогер
Регистрация: Jul 2007
Адрес: Russia
Сообщений: 292
Записей в блоге: 5
Код AS3:
addEventListener(MouseEvent.MOUSE_DOWN, вешаешь событие MOUSE_MOVE);
addEventListener(MouseEvent.MOUSE_UP, удаляешь событие MOUSE_MOVE);
addEventListener(MouseEvent.MOUSE_MOVE, в зависимости от того куда ведешь мышу, центрируясь например от центра myObj, и вращаешь.

Кстати в тему http://www.flasher.ru/forum/showthread.php?t=119194, зачем тут появился такой скрол кода?
__________________
Оптимизация производительности на уровне кода

Старый 27.12.2008, 13:11
root.Unknown вне форума Посмотреть профиль Отправить личное сообщение для root.Unknown Найти все сообщения от root.Unknown
  № 3  
Ответить с цитированием
root.Unknown

Регистрация: Dec 2008
Сообщений: 20
Это мне было понятно:
Код AS3:
addEventListener(MouseEvent.MOUSE_DOWN, mouseRotateObj);
addEventListener(MouseEvent.MOUSE_UP, mouseRotateObj);
Мне не понятно что в самой функции надо писать, типа место swich, case и т.д. )
Фунrцию саму надо написать:

Код AS3:
private function mouseRotateObj(event:flash.events.MouseEvent):void {
// бла-бла-бла ??? ??? ??? ??? ??? ???
}
Я же так понимаю что при нажатии на кнопку мыши вызвается функция mouseRotateObj которая там поворачивает объект по +2 по каком-то координату x, y, z, только не останавливаясь, пока двигаешь мышью...

Старый 27.12.2008, 13:21
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 4  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Код:
//в первом кадре (демка вращения черного квадрата)
var объектВращения:Sprite, триггерВращения:Boolean, центрВращения:Array,ABC:Number;
объектВращения = new Sprite();
объектВращения.graphics.beginFill(0);
объектВращения.graphics.drawRect(0,0,100,100);
addChild(объектВращения);
центрВращения = [200,200];
объектВращения.x=центрВращения[0];
объектВращения.y=центрВращения[1];


stage.addEventListener(MouseEvent.MOUSE_MOVE, boardMove);
stage.addEventListener(MouseEvent.MOUSE_UP, boardUp);
объектВращения.addEventListener(MouseEvent.MOUSE_DOWN, boardDown);
function boardMove(e:MouseEvent):void {
	if (триггерВращения){
		ABC = Math.atan2(центрВращения[0] - stage.mouseX, центрВращения[1] - stage.mouseY)*180/Math.PI;
		объектВращения.rotation = 180-ABC;
		}
}

function boardDown(e:MouseEvent):void {
триггерВращения = true;
}

function boardUp(e:MouseEvent):void {
триггерВращения = false;
}
Это что б принцип понять (для трех мерки есть готовое вращение)
http://www.dnadillo.dn.ua/flex/3d-text-cube.html


Последний раз редактировалось Alex Lexcuk; 27.12.2008 в 13:24.
Старый 27.12.2008, 13:22
Chas вне форума Посмотреть профиль Отправить личное сообщение для Chas Посетить домашнюю страницу Chas Найти все сообщения от Chas
  № 5  
Ответить с цитированием
Chas
[+1 14.08.08]
[+1 20.08.08]
 
Аватар для Chas

Регистрация: Sep 2002
Адрес: simferopol
Сообщений: 981
Отправить сообщение для Chas с помощью ICQ
персонаж смотрит на курсор
Код:
var xdiff:int = char.x-mouseX;
var ydiff:int = char.y-mouseY;
var angleRad:Number = Math.atan2(ydiff, xdiff);
char.rotation = angleRad * 180 / Math.PI;
__________________
~
Never trouble trouble till trouble troubles you!

Старый 11.01.2009, 09:23
root.Unknown вне форума Посмотреть профиль Отправить личное сообщение для root.Unknown Найти все сообщения от root.Unknown
  № 6  
Ответить с цитированием
root.Unknown

Регистрация: Dec 2008
Сообщений: 20
Ага, спасибо, уже разобрался, только теперь не могу разобраться с кнопками на сцене, получается когда нажимаю по кнопке в сцене, то объект прокручивается... Можно как-то сделать чтобы при наведении курсора на кнопку объект переставал крутится?

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

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

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


 


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


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