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

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

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

Регистрация: Jun 2006
Сообщений: 85
Question Подскажите формулу расчета об/мин в зависимости от fps

Туплю что-то.
Мне нужно, чтобы в сцене с заданным фпс разные объекты совершали различное кол-во оборотов за минуту одновременно. А что-то никак не соображу — чую, что не сложно, но...
Спасибо.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Смотри, вот написал функцию. Принимает параметры
1.объект который будет крутится
2.кол-во кругов
3.за сколько секунд
Код AS1/AS2:
function rot(obj, range, sec) {
	var start_time = getTimer();
	obj.onEnterFrame = function() {
		var time = 1000*sec;
		var ang = 360*range/time;
		var timeLeft = getTimer()-start_time;
		obj._rotation = ang*timeLeft;
		trace(timeLeft/1000+" прошло сек");
		if (timeLeft/1000>=sec) {
			obj._rotation=360*range //что бы не было погрешности
			delete obj.onEnterFrame;
		}
	};
}
И например закручиваем клип "clip" на 3 круга за 30 секунд
Код AS1/AS2:
rot(clip,3,30);
Что-то вроде этого.


Последний раз редактировалось samana; 28.08.2010 в 17:43.
Старый 28.08.2010, 19:08
drobinkin вне форума Посмотреть профиль Отправить личное сообщение для drobinkin Найти все сообщения от drobinkin
  № 3  
Ответить с цитированием
drobinkin
 
Аватар для drobinkin

Регистрация: Jun 2006
Сообщений: 85
samana, афигеть, большое человеческое спасибо, попробую.
Я так понимаю, эта функция не зависит от фпс?

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Пожалуйста. Да, от FPS не зависит.
Возможно будет целесообразным просто использовать флешевские Tween.


Последний раз редактировалось samana; 28.08.2010 в 19:33.
Старый 28.08.2010, 19:33
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Чей то не зависит? А enterFrame от fps не зависит по вашему?

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Зависит конечно. Расчёты поворота просто будут правильные во времени, не зависимо от FPS, а перерисовка конечно только по EntreFrame.

Добавлено через 6 минут
Ладно, виноват... Вот тогда такой вариант, тут хоть 3 FPS ставь, всё равно будет плавно крутиться.
Код AS1/AS2:
function rot(obj, range, sec) {
	var start_time = getTimer();
	var go=setInterval(r,10)
	function r() {
		var time = 1000*sec;
		var ang = 360*range/time;
		var timeLeft = getTimer()-start_time;
		obj._rotation = ang*timeLeft;
		trace(timeLeft/1000+" прошло сек");
		if (timeLeft/1000>=sec) {
			obj._rotation=360*range //что бы не было погрешности
			clearInterval(go)
		}
		updateAfterEvent()
	};
}


Последний раз редактировалось samana; 28.08.2010 в 19:58.
Старый 28.08.2010, 20:07
drobinkin вне форума Посмотреть профиль Отправить личное сообщение для drobinkin Найти все сообщения от drobinkin
  № 7  
Ответить с цитированием
drobinkin
 
Аватар для drobinkin

Регистрация: Jun 2006
Сообщений: 85
Спасибо еще раз, джентльмены
Да, сорри, я забыл уточнить — вращение должно быть непрерывным, т.е. число оборотов в минуту — это скорость вращения (непрерывного).
Щас пока не могу проверить эту функцию — она это предусматривает или прокрутилось N раз и стоп?

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Нет, тут после прокрутки останавливается, если нужно постоянное вращение, просто убери условие
Код AS1/AS2:
....
if (timeLeft/1000>=sec) {
			obj._rotation=360*range //что бы не было погрешности
			clearInterval(go)
		}

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

Регистрация: Jun 2006
Сообщений: 85
О, класс, только что проверил — усе пашет Жаль плюсов тут нет
Самана, для пущей универсальности твоей функции думаю добавить сюда параметр direction, равный 1 и -1 для задания направления вращения, т.е. по/против часовой стрелки. Я так понимаю — это просто множитель для угла:

Код AS1/AS2:
function rot(obj, range, sec, dir) {
	var start_time = getTimer();
	var go=setInterval(r,10)
	function r() {
		var time = 1000*sec;
		var ang = dir*360*range/time;
		var timeLeft = getTimer()-start_time;
		obj._rotation = ang*timeLeft;
		trace(timeLeft/1000+" прошло сек");
//		if (timeLeft/1000>=sec) {
//			obj._rotation=360*range //что бы не было погрешности
//			clearInterval(go)
//		}
		updateAfterEvent()
	};
}
 
 
rot(clip,3,30,-1);


Последний раз редактировалось drobinkin; 28.08.2010 в 20:41.
Старый 28.08.2010, 20:56
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 10  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Можно просто задать повороты с минусом
Код AS1/AS2:
rot(clip,-1,30)

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

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

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


 


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


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