当用户调整浏览器窗口大小(即ctrl + mousewheel)时,大多数基于Flash的浏览器游戏似乎无法正常调整大小。
错误调整大小的示例:Boxhead The Zombie Wars。请不要玩一会儿,以免忘记我的问题。
有些人(实际上很少)实际上正确地调整了大小。示例(至少在Chrome中):D.N.8
是否有简单或标准的技术来实现正确的大小调整?你是怎么做到的?
答案 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);
}
正如您所看到的,我在这里解决了一个错误,在您的情况下可能不是必需的。如果未关闭缩放模式,播放器将自动调整舞台大小以适应视口,使您的应用程序无视更改。当宽高比变化时,这可能会导致问题。
无论如何,我希望自己得到了大部分权利,因为我必须处理这个问题已经有一段时间了,我碰巧还有一些代码仍然存在于一个旧项目中。