![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 85
|
Туплю что-то.
Мне нужно, чтобы в сцене с заданным фпс разные объекты совершали различное кол-во оборотов за минуту одновременно. А что-то никак не соображу — чую, что не сложно, но... Спасибо. |
|
|||||
|
Смотри, вот написал функцию. Принимает параметры
1.объект который будет крутится 2.кол-во кругов 3.за сколько секунд 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; } }; } Что-то вроде этого. Последний раз редактировалось samana; 28.08.2010 в 17:43. |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 85
|
samana, афигеть, большое человеческое спасибо, попробую.
Я так понимаю, эта функция не зависит от фпс? |
|
|||||
|
Зависит конечно. Расчёты поворота просто будут правильные во времени, не зависимо от FPS, а перерисовка конечно только по EntreFrame.
Добавлено через 6 минут Ладно, виноват... Вот тогда такой вариант, тут хоть 3 FPS ставь, всё равно будет плавно крутиться. 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. |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 85
|
Спасибо еще раз, джентльмены
![]() Да, сорри, я забыл уточнить — вращение должно быть непрерывным, т.е. число оборотов в минуту — это скорость вращения (непрерывного). Щас пока не могу проверить эту функцию — она это предусматривает или прокрутилось N раз и стоп? |
|
|||||
|
Нет, тут после прокрутки останавливается, если нужно постоянное вращение, просто убери условие
|
|
|||||
|
Регистрация: Jun 2006
Сообщений: 85
|
О, класс, только что проверил — усе пашет
Жаль плюсов тут нет ![]() Самана, для пущей универсальности твоей функции думаю добавить сюда параметр direction, равный 1 и -1 для задания направления вращения, т.е. по/против часовой стрелки. Я так понимаю — это просто множитель для угла: 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. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|