1

如何在 Flex(不是Flash)中获得可用的浏览器宽度和高度?

Capabilities.screenResolutionY 和 screenResolutionX 提供了总监视器分辨率,还有 stage.stageWidth 和 stage.stageHeight 但在文档中它说“调用 Stage 对象的 stageWidth 属性会为任何不同的调用者引发异常安全沙箱作为舞台所有者(主 SWF 文件)”。并且有时舞台属性为空(如果您在某个随机类中,您甚至如何在非显示对象上获得它?)。

那么我将如何以 Flex 方式做到这一点而不抛出错误(我的应用程序可能会在某个时候被另一个加载)?

~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
所以我一直在做一些测试,它看起来像,

Rectangle(systemManager.getVisibleApplicationRect()).width
Rectangle(systemManager.getVisibleApplicationRect()).height 

给我我需要的信息。这些甚至在应用程序初始化时可用。

还,

systemManager.stage.stageWidth
systemManager.stage.stageHeight

给我同样的信息。

systemManager 是 Application 和每个 UIComponent 上的一个属性,所以除非我在其中一个类中(我认为在 UIComponent 的情况下它是 Application 的子级),我仍然需要找到一种方法来获取对 systemManager 的引用在其他类型的课程中。

~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
所以freakazoid_em 评论说我可以使用FlexGlobals.topLevelApplication 来获取对systemManager 的引用。有了它,我可以从我的 Flex 应用程序中的任何位置(随时)获取对可见浏览器宽度和高度的引用。

4

1 回答 1

0
var visibleWidth:Number = FlexGlobals.topLevelApplication.systemManager.getVisibleApplicationRect().width;
var visibleHeight:Number = FlexGlobals.topLevelApplication.systemManager.getVisibleApplicationRect().height;

// this seems to return the same values
var visibleWidth:Number = FlexGlobals.topLevelApplication.systemManager.stage.stageWidth;
var visibleHeight:Number = FlexGlobals.topLevelApplication.systemManager.stage.stageHeight;
于 2012-09-03T01:10:32.583 回答