2012-08-30 73 views
1

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

有Capabilities.screenResolutionY和screenResolutionX给出了总监视器分辨率,并有stage.stageWidth和stage.stageHeight,但在文档中它说:“调用Stage对象的stageWidth属性会引发任何调用者的异常不在与舞台所有者(主SWF文件)相同的安全沙箱中“。有时stage属性为null(你甚至可以在非显示对象上得到它,就像你在某个随机类中一样)。

所以,我会怎么做这个Flex的方式,而不是抛出错误(我的应用程序可以通过另一种在某些时候被加载)?

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

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

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

此外,

systemManager.stage.stageWidth 
systemManager.stage.stageHeight 

给我相同的信息。

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

~~ UPDATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
所以freakazoid_em评论说,我可以使用FlexGlobals.topLevelApplication获得参考systemManager的。我可以从Flex应用程序中随时随地获取对可见浏览器宽度和高度的引用。

+0

什么高度,你寻找“的高度和浏览器窗口的宽度?还是‘可视’浏览器区域(没有工具栏或选项卡滚动条或铬)?stageHeight和stageWidth应该给你的大小” Flash Player的矩形”,但可能没有任何关系的浏览器,你应该没有问题,在访问阶段在Flex applicationComplete事件触发后,在此之前,没有什么是在舞台上,和舞台不能访问。 – JeffryHouser

+0

怎么样?使用'this.explicitHeight'和'this.explicitWidth'在主应用程序(Main.mxml)嵌入到另一个HTML页面 –

+0

下面的链接时,可能会帮助你应该给你的应用程序的宽度和高度: - HTTP: //flexdevtips.blogspot.in/2010/08/detecting-browser-height.html –

回答

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; 
相关问题