Большинство Flash-игр не изменяют размеры в окне браузера. Как я могу легко заставить мою игру делать это? - PullRequest
3 голосов
/ 24 апреля 2011

Большинство браузерных игр на основе флэш-памяти не изменяют размеры должным образом, когда пользователь изменяет размер окна своего браузера (например, ctrl + mousewheel).

Пример неправильного изменения размера: Boxhead The Zombie Wars .Пожалуйста, воздержитесь от игры на мгновение, чтобы не забыть о моем вопросе.

Некоторые (на удивление очень немногие) действительно меняют размеры должным образом.Пример (по крайней мере, в Chrome): DN8

Существует ли простой или стандартный метод для правильного изменения размера?Как ты это делаешь?

1 Ответ

3 голосов
/ 24 апреля 2011

Это возможно, для начала вам нужно убедиться, что сцена не масштабируется автоматически при изменении окна просмотра игрока, и выбрать выравнивание для того места, где ваша сцена будет «прилипать» при увеличении области просмотра:

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

Как только это будет сделано, вы должны прослушать событие RESIZE сцены, чтобы при изменении размера окна / области просмотра проигрывателя вы могли проверить новый размер и соответствующим образом ретранслировать ваш пользовательский интерфейс:

var resizeTimeout:uint;

stage.addEventListener(Event.RESIZE, onResize);
function onResize(e:Event=null):void 
{
    // Try setting a delay to workaround a weird bug when leaving fullscreen mode where the
    // dimensions aren't updated properly, even though a resize event is triggered..?
    if (resizeTimeout)
        clearTimeout(resizeTimeout);

    resizeTimeout = setTimeout(
        function ()
        {
            trace("resizing: " + stage.stageWidth+"x"+stage.stageHeight);
            // Re-layout from here
        },
        250);
}

Как вы видите, я работаю над ошибкой, которая может и не потребоваться в вашем случае. Если режим масштабирования не отключен, проигрыватель автоматически изменит размер сцены, чтобы она соответствовала области просмотра, и приложение не будет учитывать изменения. Это может привести к проблемам при изменении соотношения ширина / высота.

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

...