|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
таймер выполняется значительно дольше чем нужно
Добрый день!
нарисовалась такая проблемка: создаю таймер на 200 мс, засекаю время с момента старта до момента выполнения, получается 230 мс (меряю с помощью new Date().getTime()), при этом при больших задержках (около 2000 мс) таймер наоборот срабатывает быстрее чем надо.... как можно обойти этот момент? |
|
|||||
1) Критична ли разница между 200 мс и 230 мс для вашего приложения?
2) На выполнения Date().getTime() тоже нужно время. |
|
|||||
да, критично... нужно реализовать одинаковое течение времени на 2 параллельно запущенных флешках... таймеры очень быстро разбегаются... поэтому ориентируюсь на Date, вычисляю время задержки чтобы выполнить действие в нужный шаг и ставлю таймер, но иногда бывает что таймер промахивается из за этих погрешностей(один шаг 100мс)
|
|
|||||
Не получится так, нужно синхронизировать в процессе, иначе всё равно разъедется, т.к. событие таймера обрабатывается в фазе обработки событий. При сложной фазе рендеринга обработка события таймера будет отложена до соответствующей фазы обработки кода.
Супер идеального совпадения всё равно не будет, но можно сделать очень ровно и красиво, вам нужно регулярно подводить свои таймеры. Если вы хотите грамотно организовать всякие разные анимации и события в разных флешках вам нужно сделать свой менеджер времени и временных интервалов, который будет поддерживать синхронизацию с другим таким же менеджером. Лучше всего это можно сделать при помощи localConnection, этот механизм работает достаточно быстро. Date тоже вариант, но не всегда приемлимый. Вам необходимо понять что в двух флешках за одну и ту-же минуту реального времени может произойти разное количество кадров. Категорически советую изучить статью про жизненный цикл компонентов и порядок исполнения кода. Также прочесть то что думает по этому поводу adobe, и уже оттуда можно попасть на оригинал статьи про жизненный цикл, и там же есть статья Senocular который тоже описывает эти процессы.
__________________
:) |
|
|||||
я не очень правильно выразился... синхронизировать надо не 2 флешки а 2-х клиентов на разных компьютерах... соответственно надо привязываться к чему то наиболее постоянному на разных компьютерах. опытным путем убедился что таймер на подходит, а Date идет более менее постоянно...
за статейку про жизненный цикл спасибо! кое чт оновое узнал, но речь немного не об этом... о отрисовке пока речь не идет, она будет по отдельному таймеру делаться. пока я говорю именно о шагах логики. |
Часовой пояс GMT +4, время: 11:28. |
|
« Предыдущая тема | Следующая тема » |
|
|