С тех пор, как я перешел с Windows XP на Windows 7, я заметил, что флеш-веб-игры, над которыми я работал, работали намного быстрее.Несмотря на то, что мой счетчик fps сообщает, что игра работает со скоростью 60FPS, частота кадров выглядит очень непоследовательной.Это совсем не гладко.
Я наконец отследил это до включения Windows Aero.Если я установлю рабочий стол в режим Windows Classic, то я получу плавность, подобную той, что я получала раньше на своей машине с XP.
Кроме того, при включенном Aero я могу заставить игру работать гладко, если я сделаю ее полноэкранной или если я установлю wmode = direct в параметрах тега object / embed.К сожалению, ни одно из этих решений не идеально подходит для меня, поэтому я надеюсь, что кто-то столкнулся с этой проблемой и знает о другом обходном пути.Вот некоторые подробности:
Частота кадров моей игры установлена на 60. Я обновляю игровую логику и отображаю кадр в BitmapData в ответ на событие ENTER_FRAME.Моя игровая логика обновляется в зависимости от того, сколько времени прошло с момента последнего вызова ENTER_FRAME.Кроме того, поскольку он работает очень плавно с wmode = direct, я знаю, что это не игровая логика или рендеринг, который на 100% виноват в рывках.
Я записал свой экран (ЖК-дисплей ноутбука 60FPS) свысокоскоростная цифровая камера (210FPS).В моем тесте записи у меня есть счетчик, который я увеличиваю и рисую на каждом ENTER_FRAME.Иногда счетчик действительно увеличивается на 1 при записи.Но он также увеличивается на 2, а иногда и на 3!Конечно, в записанном видео больше приращения, когда размер приращения больше.
Это как если бы вызывали ENTER_FRAME, но результаты не были скопированы на дисплей.Я мог видеть, что это происходит в извращенном случае, когда он вызывается сразу после обновления экрана на одном кадре, а затем непосредственно перед обновлением экрана на следующем кадре, поэтому вы никогда не увидите первый рисунок.Но как это могло пропустить два кадра ?!Кроме того, это не просто пропуск здесь или там.Например, я видел его увеличение на 3 кадра восемь раз подряд!т.е. видео показывает только что появляющийся кадр 3752, я нажимаю следующий кадр на видеопроигрывателе 11 раз, а затем вижу кадр 3755 без 3753 или 3754 между ними.И затем это продолжает происходить в кадре 3758, 3761, ... и 3776!
В любом случае, мне интересно, могу ли я просто сделать что-то, чтобы разозлить богов вспышки, и есть ли способ умиротворить их, чтобы достичь удивительно гладкой частоты кадров без использования wmode = direct, переходя в полноэкранный режим,или приносить в жертву животных?