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

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

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

Регистрация: Sep 2006
Сообщений: 453
По умолчанию Поворот в ближайшую сторону

Для поворотов пользуюсь TweenLite от greensock, если надо сделать поворот в ближайшую сторону тесть если у меня например надо повернуть от 10 градусов до 350 градусов стандартно надо в таком случаи менять 350 в -10. Какой функцией это можно сделать чтобы правильно работало?

Старый 04.06.2012, 22:11
RJ Presto вне форума Посмотреть профиль Отправить личное сообщение для RJ Presto Найти все сообщения от RJ Presto
  № 2  
Ответить с цитированием
RJ Presto

Регистрация: Nov 2007
Сообщений: 55
не очень понял вопрос
если надо просто угол преобразовать - то
Код AS3:
if (angle > 180)
{
  angle -= 360;
}

Старый 04.06.2012, 22:16
54321go вне форума Посмотреть профиль Отправить личное сообщение для 54321go Найти все сообщения от 54321go
  № 3  
Ответить с цитированием
54321go

Регистрация: Sep 2006
Сообщений: 453
угол преобразовать, не надо, надо понять, что ближе минусовое или плюсовое значение.

Старый 04.06.2012, 23:04
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 4  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
https://github.com/ramshteks/as3bicy...m/Angle.as#L23

вот метод(23 строчка), который дает минимальный угод между двумя заданными.(Знак означает направление). Писалось как раз под сходную с вашей задачу
Если это поможет конечно

Старый 04.06.2012, 23:10
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 5  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Вроде как плагин же был у гринсока (или сразу встроеная функция) в твинмаксе, shortRotation, если не ошибаюсь. Если вам не принципиально, что использовать, TweenLite или TweenMax, конечно.

ramshteks, в вашем коде можно Math.PI / 180 вынести в отдельное поле
__________________
hauts.ru


Последний раз редактировалось Hauts; 04.06.2012 в 23:12.
Старый 04.06.2012, 23:15
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 6  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Цитата:
в вашем коде можно Math.PI / 180 вынести в отдельное поле
ради одного использования? Можно конечно, чтобы боб мартин был счастлив =)

Старый 05.06.2012, 01:19
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Несчастный Боб — горе в семье.
Код AS3:
public static function minAngle(from:Number, to:Number):Number 
{
	to = to % 360;
	from = from % 360;
	if(to < 0) to += 360;
	if (from < 0) from += 360;
	var cw:Number = to - from;
	if (cw < 0) cw += 360;
	var ccw:Number = from - to;
	if (ccw < 0) ccw += 360;
	return (cw < ccw ? cw : - ccw);
}
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 05.06.2012 в 01:55.
Старый 05.06.2012, 07:23
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 8  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Несчастный Боб — горе в семье.
Тогда наверное вот так для твинера лучше:
Код AS3:
public static function minAngle(from:Number, to:Number):Number 
{
	...
	return from + (cw < ccw ? cw : - ccw);
}

Старый 05.06.2012, 12:08
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Для твинера — да; но, конечно, не стóит включать это в данную функцию))) дабы не испытать удивление. Либо функция должна быть названа и продокументирована соответственно, как преобразующая значение to.
__________________
Reality.getBounds(this);

Старый 05.06.2012, 12:44
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 10  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Для твинера — да; но, конечно, не стóит включать это в данную функцию))) дабы не испытать удивление. Либо функция должна быть названа и продокументирована соответственно, как преобразующая значение to.
Стырил себе так:
Код AS3:
public static function minAngle(from:Number, to:Number, abs:Boolean = true):Number 
		{
			to = to % 360;
			from = from % 360;
			if(to < 0) to += 360;
			if (from < 0) from += 360;
			var cw:Number = to - from;
			if (cw < 0) cw += 360;
			var ccw:Number = from - to;
			if (ccw < 0) ccw += 360;
			var ang:Number;
			if (abs) ang = from + (cw < ccw ? cw : - ccw);
			else ang = (cw < ccw ? cw : - ccw);
			return ang;
		}

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

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

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


 


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


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