获取可用的浏览器宽度和高度

时间:2012-08-30 17:44:52

标签: flash flex flex4

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

1 个答案:

答案 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;