如何在 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 应用程序中的任何位置(随时)获取对可见浏览器宽度和高度的引用。