Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ускорение времени (http://www.flasher.ru/forum/showthread.php?t=146696)

evgen4ik 15.11.2010 15:39

ускорение времени
 
Здравствуйте. Подскажите, плиз, как сделать ускорение времени!
Может есть функция изменения фпс?

mikhailk 15.11.2010 15:45

на фпс (и событие enterFrame) завязываться не стоит.
у разных пользователей будут разные результаты

выставьте фпс побольше (хоть 100), а движения организовывайте по времени.
для ускорения-замедления - параметр, который учитывайте при расчете движения

КорДум 15.11.2010 15:45

Чтобы преодолеть пространственно-временной барьер? :D
Используйте таймер, если надо. А вообще, для чего это вам?

udaaff 15.11.2010 15:45

Stage#frameRate

mikhailk 15.11.2010 15:46

влетит автор с фреймрейтом
все равно по времени корректироваться придется

evgen4ik 15.11.2010 16:00

мне нужно сделать ускорение в игре...
там ведь не только программное перемещение, но и анимации. и всё это нужно ускорить!

Добавлено через 12 минут
Stage#frameRate для моей цели подошёл.... но возник интересный непонятный момент!
в игре есть скроллинг по карте, и при ускорении frameRate в целое количество раз всё движется как по маслу. но стоит изменить коэффициент ускорения на дробное число, и скрол начинает дёргаться! почему?

medvedya2 15.11.2010 16:33

frameRate для этого менять очень плохо,
лучше сделать один обработчик, EnterFrame илм таймера
который будет вызывать функцию у каждого объекта.
тогда не будет проблем с регулировкой скорости (например если вам надо ускориться в полтора раза то тогда обработчик первый раз вызывает функции один раз второй раз вызывает два раза - выведите формула для расчета).

не стоит делать frameRate больше 60.
а тем более дробный.

ZergMaster 15.11.2010 17:01

если вы пишете в кадре, то код таймера будет выглядеть так:
Код AS3:

var period:Number = 1000;
var animTimer:Timer = new Timer(period);//частота срабатывания таймера в милисекундах
    animTimer.addEventListener(TimerEvent.TIMER, Animation);
    animTimer.start();
 
function Animation(e:TimerEvent):void
    {
        функцияВкоторойВсяВашаАнимация();
        e.updateAfterEvent();
    }

изменяя переменную period вы будете изменять скорость анимации... чем меньше число - тем быстрее.

-De- 15.11.2010 17:03

Я давно талдычу, что делать надо вот так http://www.kongregate.com/forums/4/topics/1773 как во 2-м посте.
Ну т.е. должно быть некое "время между фреймами", от которого всё пляшет (эти ваши твины так сделаны).
Только так надо делать изначально, потому как потом и анимации хрен пойми уже как сделаны и таймеров понатыкано.

evgen4ik 15.11.2010 17:41

medvedya2, ваша мысль ясна и, конечно, принята в базу знаний;)
но как не меняя frameRate ускорить анимацию?

-De-, английский для меня пока тёмный лес.....
Можно в кратце, как использовать то самое "время между фреймами"?


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

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