Как определить фактический временной интервал, который пользователь видит между двумя последовательными изображениями

Я хотел бы реализовать задачу проверки времени с помощью Actionscript. Идея состоит в том, чтобы динамически изменять временной интервал между замаскированными и немаскированными изображениями на основе ответов пользователя. "Время проверки" определяется как интервал, с которым пользователь достигает определенной точности. На точность этого интервала влияют различные факторы: частота обновления монитора, частота кадров flash vm, точность события таймера, время рендеринга. Что-нибудь еще? Как определить фактический инверс, который видит пользователь? Требуется высокая точность, поскольку для этой задачи типичная производительность составляет от 20 до 80 мсек. Я предполагаю, что ограничивающим фактором является частота обновления монитора. Если это 60 Гц, я смогу увеличить только на 16,7 мс. Есть ли способ обойти это ограничение? Если я использую более высокую частоту кадров, будет ли проигрыватель синхронизировать ее до 60 Гц?

1 ответ

У Flash Player есть верхний предел частоты кадров. Хотя технически вы можете установить значение выше 60fps, я не верю, что экран будет обновляться быстрее, чем это, если у пользователя установлена ​​современная версия Flash Player. Кроме того, на самом деле не имеет значения, какую частоту кадров вы устанавливаете, поскольку это предложение, чтобы игрок сделал все возможное, чтобы обновить его с такой скоростью... и он сделает это, если это вообще возможно! Тем не менее, существует ряд факторов, которые могут сделать невозможным для игрока фактическую частоту кадров.

  1. Сложная сцена с множеством разных видеороликов, многократно вложенных.
  2. Злоупотребление масками
  3. Повторное применение фильтров
  4. Особенно сложный или неэффективный код, реализованный в обработчике событий ENTER_FRAME или TIMER (или многих из них)
  5. Граф сложного объекта
  6. Неоправданное создание экземпляров и удаление объектов, что приводит к принудительному сбору мусора (это вызывает заметный сбой при очень высокой частоте кадров).

    Следует также отметить, что вы не можете действительно полагаться на то, что время обновления между обновлениями, ENTER_FRAME или TIMER, будет на 100% согласованным даже в лучших обстоятельствах.

Надеюсь, это поможет.

Другие вопросы по тегам