大多数Flash游戏都无法在浏览器窗口中正确调整大小.我该如何让自己的游戏做到这一点?

Most Flash games don't resize properly in a browser window. How can I easily make my game do this?

本文关键字:游戏 自己的 这一点 调整 Flash 浏览器 窗口 大多数      更新时间:2023-09-26

大多数基于flash的浏览器游戏在用户调整浏览器窗口大小(如ctrl+鼠标滚轮)时似乎无法正确调整大小。

调整大小的糟糕例子:《Boxhead The Zombie Wars》。请暂时不要玩,以免你忘记我的问题。

一些(令人惊讶的是很少)确实正确地调整了大小。示例(至少在Chrome中):D.N.8

是否有一个简单或标准的技术来完成适当的调整?你是怎么做到的?

这是可能的,对于初学者来说,你需要确保当玩家视口改变时舞台不会自动缩放,并选择一个随着视口增长而"坚持"的舞台对齐:

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

一旦完成,你必须听取舞台的RESIZE事件,这样当播放器窗口/视口被调整大小时,你可以检查新的大小并相应地重新布局你的UI:

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);
}

正如您所看到的,我在这里解决了一个错误,这在您的情况下可能不是必要的。在没有关闭缩放模式的情况下,玩家将自动调整你的舞台大小以适应视口,使你的应用程序不受这些变化的影响。当宽度/高度比改变时,这可能会导致问题。

无论如何,我希望我得到的大部分是正确的,这是一段时间以来,我不得不处理这个,我只是碰巧有这一点代码躺在周围仍然从一个老项目