如何在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应用程序中随时随地获取对可见浏览器宽度和高度的引用。
什么高度,你寻找“的高度和浏览器窗口的宽度?还是‘可视’浏览器区域(没有工具栏或选项卡滚动条或铬)?stageHeight和stageWidth应该给你的大小” Flash Player的矩形”,但可能没有任何关系的浏览器,你应该没有问题,在访问阶段在Flex applicationComplete事件触发后,在此之前,没有什么是在舞台上,和舞台不能访问。 – JeffryHouser
怎么样?使用'this.explicitHeight'和'this.explicitWidth'在主应用程序(Main.mxml)嵌入到另一个HTML页面 –
下面的链接时,可能会帮助你应该给你的应用程序的宽度和高度: - HTTP: //flexdevtips.blogspot.in/2010/08/detecting-browser-height.html –