Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   UpdateScene and RenderScene (http://www.flasher.ru/forum/showthread.php?t=170222)

imena 22.10.2011 19:33

Скажите(я пока все еще на перепутье)... я так понимаю, установив timer delay в 40 миллисекунд... мы получаем те же 24 кадра в секунду.. тогда, в чем разница? Я еще не понимаю всех тонкостей.... Просто, я уже приводил тут пример(возможно код написан криво)... но мой Timer(40) не срабатывает строго каждые 40 миллисекунд.. и об этом написано у Мука... , ENTER_FRAME при фпс = 24.... тоже не срабатывает строго каждые 1000/24 = 41.6(6) миллисекунд.... НО, я вставил trace deltaTime в timerListener и enterFrameListener, и получилось что отклонения от среднего при использовании Timer больше чем при ENTER_FRAME, т.е., один раз 44 миллисекунды, другой раз 66 миллисекунд.. , а у ENTER_FRAME ...все значения примерно от 33 до 50 миллисекунд... и поэтому у меня анимация получается дерганная при использовании Timer.
Да, согласен, может я просто неправильный код для случая с Таймером использую... в общем... приведу еще раз...
Код AS3:

 
/*Кусок функции update объекта анимации... */
spr.addChild(frame[curFrame]);
 
deltaFrame += (deltaTime/1000)*_fps; // _fps - скорость воспроизведения самой анимации
 
curFrame += deltaFrame;

Может для Таймера нужно по-другому организовать анимацию?

Zebestov 22.10.2011 21:30

Сколько себя помню все, что нужно было отобразить на экране, делал по ENTER_FRAME.

crazyone 22.10.2011 23:38

А мне вот уже третюю страницу интересно услышать аргументы в пользу Таймера.
У Мука, конечно, описывается анимация по таймеру, но ты, видимо, довольно давно читал, т.к. единственный весомый довод в пользу таймера, который приводит Мук - это независимость от фпс, в том числе - независимость от фпс родительской флешки, в которую загрузили нашу флешку.

Я бы побоялся публично давать советы типа
Цитата:

Сообщение от stweet (Сообщение 1041055)
на любое приложение достаточно в основном классе зарегистрировать все один раз таких слушателей как

Тут и за упоминание о синглтонах можно отгрести, а ты такое говоришь, да еще и вслух.

stweet 22.10.2011 23:48

Цитата:

Сообщение от crazyone (Сообщение 1041187)
А мне вот уже третюю страницу интересно услышать аргументы в пользу Таймера.
У Мука, конечно, описывается анимация по таймеру, но ты, видимо, довольно давно читал, т.к. единственный весомый довод в пользу таймера, который приводит Мук - это независимость от фпс, в том числе - независимость от фпс родительской флешки, в которую загрузили нашу флешку.

Я бы побоялся публично давать советы типа

Тут и за упоминание о синглтонах можно отгрести, а ты такое говоришь, да еще и вслух.

Не совсем понял, Вы ни когда не используете интерфейсы?

crazyone 23.10.2011 00:29

Не совсем понял - при чем здесь интерфейсы?

stweet 23.10.2011 00:54

Цитата:

Я бы побоялся публично давать советы типа
Цитата:

Цитата: Сообщение от stweet
на любое приложение достаточно в основном классе зарегистрировать все один раз таких слушателей как
Тут и за упоминание о синглтонах можно отгрести, а ты такое говоришь, да еще и вслух.
вероятно я не понял о чём тут говориться.

Genm 23.10.2011 00:54

Мое сугубо личное заблуждение, что для отрисовки сцены надо использовать ENTER_FRAME, так как при этом происходит автоматическая перерисовка сцены в любом случае. А для расчетов, которое необходимо делать чаще, брать таймер.
Так мы не перегружаем процессор лишними отрисовками, которые глаз все равно не оценит и избегаем ошибок при расчетах, так как таймер обсчитывает все часто.

-De- 23.10.2011 00:55

Зачем таймер использовать как замену ENTER_FRAME?
Ведь есть же ENTER_FRAME.

После ENTER_FRAME вызывается отрисовка, вызывается всегда (возможно, ничего не делает, но вызывается) сама по себе, не надо вызывать уродский updateAfterEvent() (если вдруг у вас что-то меняется между таймерами - можете получить фпс/2).

У меня всё на ENTER_FRAME (есть даже таймеры свои). Таймеры появились, т.к. выяснилось, что в играх время должно быть централизовано. Потому что в играх есть паузы. У таймеров пауз нет. И пауз к тому же не одна разновидность и есть их иерархия %), например есть пауза "рекламка показывается", есть пауза "юзер нажал ескейп и выехала менюха", есть пауза "юзер открыл меню здания на уровне" (при том в 3-й паузе может вызваться 2-я, а в ней 1-я).

И это, 24 фпс достаточно для фильма, который снят с реального мира на камеру. При этом у движущихся в камере обьектов автоматически получается размазывание (как и у человеческого глаза) - потому смотрится нормально. В играх же при 24 фпс одна чёткая картинка резко меняется на другую чёткую картинку. Потому разница между 24 и 40 фпс в играх на глаз очень видна и не в пользу 24.


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

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