如何在Flex中获取可用的浏览器宽度和高度( 不 Flash)?
有Capabilities.screenResolutionY和screenResolutionX,它们提供了总监视器分辨率,并且有stage.stageWidth和stage.stageHeight,但在文档中它说“调用Stage对象的stageWidth属性会为任何调用者抛出异常在与舞台所有者(主SWF文件)相同的安全沙箱中“。并且有时stage属性为null(你如何在非显示对象上得到它,就像你在一些随机类中一样?)。
那么我如何以Flex方式执行此操作而不抛出错误(我的应用程序可能会在某个时候被另一个加载)?
~~ UPDATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
所以我一直在做一些测试,看起来像,
Rectangle(systemManager.getVisibleApplicationRect()).width
Rectangle(systemManager.getVisibleApplicationRect()).height
告诉我我需要的信息。甚至可以在Application initialize中使用它们。
另外,
systemManager.stage.stageWidth
systemManager.stage.stageHeight
给我相同的信息。
systemManager是Application和每个UIComponent的属性,所以除非我在其中一个类中(我认为在UIComponent的情况下它是Application的子代)我仍然需要找到一种方法来获取引用到其他类型的类的systemManager。
~~ UPDATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
所以freakazoid_em评论说我可以使用FlexGlobals.topLevelApplication来获取对systemManager的引用。有了这个,我可以从Flex应用程序的任何地方(随时)获得对可见浏览器宽度和高度的引用。
答案 0 :(得分: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;