javascript-大多数Flash游戏在浏览器窗口中无法正确调整大小.我如何轻松地使我的游戏做到这一点?

当用户调整浏览器窗口的大小(即ctrl鼠标滚轮)时,大多数基于Flash的浏览器游戏似乎无法正确调整大小.

大小调整错误的示例: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);
}

如您所见,我在这里解决了一个错误,在您的情况下可能不是必需的.在不关闭缩放模式的情况下,播放器将自动调整舞台大小以适合视口,从而使您的应用程序忽略更改.当宽度/高度比改变时,这可能导致问题.

无论如何,我希望我能做到这一点的大部分权利,自从我不得不处理这个问题已经过去了一段时间,我只是碰巧在旧项目中仍然放着这部分代码.

上一篇:having在Oracle和mysql小点不同


下一篇:拦截Flash和PHP之间数据的工具