当用户调整浏览器窗口的大小(即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);
}
如您所见,我在这里解决了一个错误,在您的情况下可能不是必需的.在不关闭缩放模式的情况下,播放器将自动调整舞台大小以适合视口,从而使您的应用程序忽略更改.当宽度/高度比改变时,这可能导致问题.
无论如何,我希望我能做到这一点的大部分权利,自从我不得不处理这个问题已经过去了一段时间,我只是碰巧在旧项目中仍然放着这部分代码.