UpdateScene and RenderScene
Иго-гоооо
Сектор номер 2. Вопрос прислал пользователь из Пензы по имени imena. Вопрос: Пытаюсь смастерить каркас для игры... для несуществующей игры. Решил сделать две главные функции - UpdateScene(deltaTime) и RenderScene() В UpdateScene(deltaTime) выполняю все операции связанные с вычислением нового положения объекта(ов), текущий кадр в анимация(1) - анимация(N) и т.д. и т.п. В RenderScene() - выполняю прорисовку всей сцены с учетом тех данных что были получены в UpdateScene() Пихнул все это хозяйство в ENTER_FRAME. А теперь, уважаемые знатоки, внимание вопрос: 1) правильно пихнул(обе функции) или 2) может одну из них пихнуть в EXIT_FRAME? Или может еще куда? Всем заранее спасибо |
Правильно пихнул [x]
Можно одну из них пихнуть в Event.RENDER. Cчет 1:0 в пользу знатоков! |
Добавочный ответ в пользу знатоков.
В место "Event.ENTER_FRAME" советую использовать "TimerEvent.TIMER" с "updateAfterEvent();". Код AS3:
|
Кстати, можно поподробнее - почему рендер сцены лучше вешать на таймер, чем на события кадра?
|
Возможностей больше и производительность выше.
|
Мне тоже интересно. Я не волшебник, я только учусь... и как я понимаю, если мы поставим таймер на 1 секунду, то наш прощет сцены будет ТОЛЬКО раз в секунду?
В общем...вот как у меня было сделано(до того как я создал эту тему) Код AS3:
|
Код AS3:
|
Спасибо.
Я в начале сделал по примеру Мука диспетчер.... сделал интерфейс... но... чет запутался во всех этих ограничениях с объвлением переменных, с доступом... и в конце-концов плюнул... оказЦа зря плюнул Добавлено через 1 час 51 минуту Я тут поэкспериментировал с анимацией... В общем при использование Таймера анимация более 'рваная', не не равномерная, а именно 'рваная', НЕ ВСЕГДА, но все же слишком часто, а при использовании различных значений frameRate и скорости самой анимации ... анимация плавнее или если и скачками, то... мммм.. равномерными скачками Вот кусок кода который разместил в enterFrameListener(frameRate = 30) и в timerListener(таймер на 40 миллисекунд): Код AS3:
Код AS3:
При использовании таймера, событие происходит не точно через каждые 40 миллисекунд... я трейсом вывел значения... там встречаются и 40 миллисекунд и 69 миллисекунд... с учетом кода производим расчеты... когда у нас 40 миллисекунд... все ок... т.к. 0.04*_fps(самой анимации = 30) = 1.2.. т.е. приращение идет на 1 кадр... и все хорошо, НО, когда deltaTime = 66 миллисекундам, тогда 0.069*30 = 2.07, т.е. приращение идет уже на два кадра, а в какой-то момент даже встретилось значение в 6 кадров. При использовании ENTER_FRAME среднее deltaTime = 0.35.. в результате очередных расчетов... получаем 0.033*30 = 0.99, т.е., приращение идет все время на один кадр. В общем... к чему это я все... сижу тут и думаю, какой вариант все же предпочтительнее? И почему у меня с вариантом таймера получается такая фигня? Попробую сейчас сделать 20 анимаций одновременно...и гляну на результаты |
Что то я запутался в ваших цифрах. Сейчас накидаю пример.
|
вечером гляну... а то уже глаза закрываются
|
Часовой пояс GMT +4, время: 19:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.