大多数Flash游戏都没有在浏览器窗口中正确调整大小。我怎样才能轻松让我的游戏做到这一点?

时间:2011-04-24 00:32:49

标签: javascript flash actionscript-3 actionscript

当用户调整浏览器窗口大小(即ctrl + mousewheel)时,大多数基于Flash的浏览器游戏似乎无法正常调整大小。

错误调整大小的示例:Boxhead The Zombie Wars。请不要玩一会儿,以免忘记我的问题。

有些人(实际上很少)实际上正确地调整了大小。示例(至少在Chrome中):D.N.8

是否有简单或标准的技术来实现正确的大小调整?你是怎么做到的?

1 个答案:

答案 0 :(得分:3)

这是可能的,对于初学者,您需要确保在更改播放器视口时舞台不会自动缩放,并选择一个对齐,以便在视口增长时舞台“贴”:

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

正如您所看到的,我在这里解决了一个错误,在您的情况下可能不是必需的。如果未关闭缩放模式,播放器将自动调整舞台大小以适应视口,使您的应用程序无视更改。当宽高比变化时,这可能会导致问题。

无论如何,我希望自己得到了大部分权利,因为我必须处理这个问题已经有一段时间了,我碰巧还有一些代码仍然存在于一个旧项目中。