Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AS3:浏览器会自动告诉Flash Player缩小_Javascript_Actionscript 3_Flash_Firefox_Windows 8 - Fatal编程技术网

Javascript AS3:浏览器会自动告诉Flash Player缩小

Javascript AS3:浏览器会自动告诉Flash Player缩小,javascript,actionscript-3,flash,firefox,windows-8,Javascript,Actionscript 3,Flash,Firefox,Windows 8,我正在开发一款Flash游戏,它在大多数浏览器和机器上都能很好地渲染。然而,当我在微软Surface Pro平板电脑上运行Firefox游戏时,SWF似乎被缩小了。我可以右键点击游戏,然后点击“全部显示”,游戏就会恢复正常 然而,我的问题是如何阻止Firefox(和/或我的电脑)这么做?理想的解决方案是使用代码为我的用户自动修复问题,因为我觉得这个问题可能会出现在我还没有遇到的其他浏览器/机器组合中 我的程序所做的第一件事就是将其称为: stage.scaleMode = StageScaleM

我正在开发一款Flash游戏,它在大多数浏览器和机器上都能很好地渲染。然而,当我在微软Surface Pro平板电脑上运行Firefox游戏时,SWF似乎被缩小了。我可以右键点击游戏,然后点击“全部显示”,游戏就会恢复正常

然而,我的问题是如何阻止Firefox(和/或我的电脑)这么做?理想的解决方案是使用代码为我的用户自动修复问题,因为我觉得这个问题可能会出现在我还没有遇到的其他浏览器/机器组合中

我的程序所做的第一件事就是将其称为:

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
有没有办法告诉Flash Player应该从哪个缩放级别开始?或者也许有一种方法可以检测当前的缩放级别,以便我们能够优雅地响应它


另一种选择是检测浏览器的缩放级别,但是,即使是这样,Firefox在这种情况下实际上也会设置为100%缩放,所以这不是很有用。

显然,当Flash Player的缩放被改变时,它也会改变
stage.stageWidth
stage.stagewhight
。因此,通过将这些值与预期值进行比较,可以检测到正在发生缩放

因此,一个快速解决方案是在您自己的文档类中执行计数器缩放:

scaleX = scaleY = stage.stageWidth / STAGE_WIDTH;
其中,
STAGE\u WIDTH
是一个常数,用于存储预期的STAGE WIDTH。我看不出这种方法有什么副作用,但您必须确保所有代码都引用了
STAGE\u WIDTH
,而不是
STAGE.stageWidth


一个值得注意的结果是位图图像看起来更像素化,但即使在您点击“显示所有”时,它们也会显示像素化。您确定缩小的不仅仅是浏览器,因为可能SWF不适合吗?我刚刚检查了,而且浏览器肯定设置为100%缩放。因为我已经将
scaleMode
设置为
NO\u SCALE
,通过浏览器放大和缩小会调整舞台的大小,但实际上不会缩放SWF。取而代之的是,当“视口”改变大小时,它只是保持所有内容的大小不变。我所说的“视口”是指,浏览器中有一个框,在其中渲染SWF,缩放所做的只是更改该框的大小,而不缩放其中的内容。