Как определить фактический временной интервал, который пользователь видит между двумя последовательными изображениями
Я хотел бы реализовать задачу проверки времени с помощью Actionscript. Идея состоит в том, чтобы динамически изменять временной интервал между замаскированными и немаскированными изображениями на основе ответов пользователя. "Время проверки" определяется как интервал, с которым пользователь достигает определенной точности. На точность этого интервала влияют различные факторы: частота обновления монитора, частота кадров flash vm, точность события таймера, время рендеринга. Что-нибудь еще? Как определить фактический инверс, который видит пользователь? Требуется высокая точность, поскольку для этой задачи типичная производительность составляет от 20 до 80 мсек. Я предполагаю, что ограничивающим фактором является частота обновления монитора. Если это 60 Гц, я смогу увеличить только на 16,7 мс. Есть ли способ обойти это ограничение? Если я использую более высокую частоту кадров, будет ли проигрыватель синхронизировать ее до 60 Гц?
1 ответ
У Flash Player есть верхний предел частоты кадров. Хотя технически вы можете установить значение выше 60fps, я не верю, что экран будет обновляться быстрее, чем это, если у пользователя установлена современная версия Flash Player. Кроме того, на самом деле не имеет значения, какую частоту кадров вы устанавливаете, поскольку это предложение, чтобы игрок сделал все возможное, чтобы обновить его с такой скоростью... и он сделает это, если это вообще возможно! Тем не менее, существует ряд факторов, которые могут сделать невозможным для игрока фактическую частоту кадров.
- Сложная сцена с множеством разных видеороликов, многократно вложенных.
- Злоупотребление масками
- Повторное применение фильтров
- Особенно сложный или неэффективный код, реализованный в обработчике событий ENTER_FRAME или TIMER (или многих из них)
- Граф сложного объекта
Неоправданное создание экземпляров и удаление объектов, что приводит к принудительному сбору мусора (это вызывает заметный сбой при очень высокой частоте кадров).
Следует также отметить, что вы не можете действительно полагаться на то, что время обновления между обновлениями, ENTER_FRAME или TIMER, будет на 100% согласованным даже в лучших обстоятельствах.
Надеюсь, это поможет.