Actionscript3 / flash cs4: как устранить задержку при запуске из браузера - PullRequest
0 голосов
/ 12 августа 2011

Я уже месяц работаю над флеш-игрой, которой можно управлять в браузере (легкие вычисления). При этом я заметил, что в некоторых браузерах игра работает со скоростью 15 кадров в секунду (игра должна работать со скоростью 80 кадров в секунду). Известно, что это произошло в IE9, и быстрое решение состояло в том, чтобы добавить эту строку в верхней части HTML:

<meta http-equiv="X-UA-Compatible" value="IE=9">

Это было быстрое исправление, которое переводило IE в режим совместимости и значительно улучшило fps (примерно до ... 60, скажем).

Тем не менее, я считаю, что игра работает медленнее, чем следовало бы в каждом браузере, что заметно при сравнении html-версии с swf.

Также довольно заметно, что движение в игре (html) «кренится»: эти крены наносят ущерб эстетике игры и, следовательно, играбельности!

Все это заставляет меня поверить, что браузеры ограничивают доступ к видеокарте компьютеров;

1) Это медленно в html и быстро в swf

2) Звук воспроизводится с нормальной скоростью, но графическая задержка

EDIT

3) Вся графика в игре имеет довольно низкое разрешение (т. Е. Графика, отображаемая в игре в виде width1xheight1, является видеоклипом width1xheight1 png's) + минимально возможный

4) Я сделал очень (в вычислительном отношении) простые проекты Flash и видел те же проблемы с движением графики.

Может кто-нибудь дать мне несколько советов о том, как повысить плавность игры в браузерах?

1 Ответ

1 голос
/ 13 августа 2011

Это может быть признаком того, как SWF-файл внедрен в HTML-страницу. Flash поддерживает несколько «оконных режимов», которые определяют, как содержимое отображается в окне браузера. Это устанавливается с помощью параметра wmode, когда SWF-файл встроен в HTML-страницу.

В соответствии с документацией Adobe для наилучшей производительности следует установить значение "direct":

direct - Использовать прямой путь рендеринга. Это обходит композитинг в экранный буфер и отображает содержимое SWF непосредственно на экран. Это значение wmode рекомендуется для обеспечения максимальной производительности воспроизведение контента и обеспечивает аппаратное ускорение представления SWF контент, который использует Stage Video или Stage 3D.

На практике wmode может действовать беспорядочно, поэтому может помочь попробовать альтернативы, упомянутые в документации .

Другие варианты, которые могут помочь улучшить производительность:

  • Использовать stage.scaleMode = StageScaleMode.NO_SCALE. Это предотвратит масштабирование содержимого, если встроенный размер не соответствует исходному размеру. Масштабирование способствует загрузке процессора, поэтому его отключение должно увеличить частоту кадров (см. StageScaleMode # NO_SCALE ).
  • Установите opaqueBackground для непрозрачных фрагментов ролика (например, корневого фрагмента ролика). Прозрачность требует дополнительных вычислений для умножения цвета переднего плана на цвет фона. Установка непрозрачного фона обходит эти дополнительные вычисления и может привести к повышению производительности. (см. DisplayObject # opaqueBackground )
...