флэш-клиент зависает при сворачивании - PullRequest
0 голосов
/ 25 мая 2011

Мы создаем многопользовательскую флеш-игру с использованием actioncript 3. Игра должна работать в режиме реального времени.

У нас есть проблема, когда вы минимизируете игровой клиент, он зависает - я могу увидеть это по предварительному просмотру свернутого окна, мой персонаж, который должен ходить по комнате, завис.Это вызывает проблему в реальном времени, потому что все, что происходит, когда клиент проигрывателя свернут, будет пропущено ...

Кто-нибудь знает, почему флэш-клиент останавливается / останавливается при сворачивании, и если есть способ предотвратить это?это?

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Поведение, которое вы видите, представляет собой пару функций, добавленных в версию 10.1, для увеличения времени автономной работы и производительности на мобильных устройствах.См. эту документацию для получения полной информации.Главное изменение, которое нужно понять, это то, что когда SWF полностью за кадром (из-за прокрутки или табуляции), его частота кадров падает до 2 кадров в секунду.Там нет способа отключить это, AFAIK.(И я не думаю, что должно быть ..)

Для того, чтобы справиться с этим, многие виды обработки должны работать нормально, если вы не делаете никаких неявных предположений о частоте кадров.Контент будет по-прежнему получать все те же события, что и обычно (сокеты, таймеры и т. Д.), Хотя некоторые из них будут обрабатываться реже, чем обычно.Таким образом, в целом можно (и необходимо) создавать контент, который работает во всех случаях, если вы знаете, как ожидаете, что время будет работать, и планируете соответственно.

Например, если персонаж ходит по экрану, и пользователь какое-то время свернул браузер, когда браузер снова развернется, должен ли персонаж дойти до места назначения?В однопользовательской игре, возможно, он не должен, но в многопользовательской игре (где местоположение персонажа может быть предназначено для представления данных на стороне сервера), возможно, он должен.В первом случае, возможно, лучше использовать кадровую анимацию, которая будет замедляться при минимизации, но в последнем случае вам почти наверняка понадобится сценарий анимации, управляемый временем - в идеале вы хотите, чтобы скрипт, который устанавливает местоположение персонажа, знал, когда он началходьба, и когда он должен прибыть, но все равно, сколько раз он перерисовывается во время поездки.

Что вы определенно не хотите сделать, это запустить таймер илиИнтервал, который срабатывает 30 раз в секунду и обновляет ваш контент в этом событии.Это просто тратит много ресурсов процессора, так как вы делаете много обновлений, которые никто никогда не увидит.

0 голосов
/ 25 мая 2011

Возможно, такое поведение будет иметь место, потому что Flash остановит визуальные вычисления в некоторых конкретных ситуациях, пока игрок не виден. Возможно, у вас есть код, который требует вычисления текстур, позиционирует все время, пока приложение работает, и после того, как вы пытаетесь восстановить окно - слишком много нужно вычислить, и потребуется некоторое время, чтобы добраться до точки что должно быть, если бы оно не было минимизировано (некоторый линейный код).

Возможно, решение состоит в том, чтобы прекратить вычисление визуальной части, пока она минимизирована. Не совсем уверен, но я думаю, что пока нет возможности работать в фоновом режиме с помощью флеш-плеера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...