【发布时间】:2011-08-18 00:30:54
【问题描述】:
我遇到了一个相当大的问题。我希望这是由于我自己的愚蠢而不是某种错误。我有需要知道屏幕尺寸的代码。我还没有找到可靠的方法来做到这一点。在 iPad 2 和 iPhone4/iPod Touch 4 iOS 设备上使用 Flash Builder 4.5 的生产版本。一般来说,我的应用程序运行良好,但我无法在程序启动时确定屏幕大小和方向。让我解释一下我遇到的问题:
进入由ADDED_TO_STAGE事件调用的“init”函数时,stage.stageHeight和stage.stageWidth的值都是0。
我可以查询 Capabilities.screenResolutionX 和 Capabilities.screenResolutionY,但它们是错误的。它们具有原始 X 和 Y 值,但与方向无关。因此,例如,我通过 screenResolutionX 以横向模式开始包含 768(或其他)而不是 1024。
我查看了 stage.width 和 stage.height 的值,它们没有有效值。
我为 EVENT.RESIZE 设置了 onResize 函数,但如果应用程序在已经处于横向模式时从设备启动,则不会调用它。如果我以纵向模式启动应用程序然后旋转,这会被调用。
所以我的问题是我应该在应用程序启动时查询什么来了解应用程序的实际宽度和高度。一定有办法做到这一点,但显然不使用上述任何方法!
顺便说一句,这是在 iOS 设备上。我不能说它是如何对其他人起作用的。我已经通过打印结果和在调试器中运行来确认这些结果。
【问题讨论】:
-
我找到了解决方案。 @grapefrukt 的解决方案也可以。我的不需要等待超过 ADDED_TO_STAGE。它只是用一些常识规则包装这些值的 getter,例如如果 state.orientation 值指示一种横向模式但宽度小于高度,则交换这些值。刚刚花了一些时间进行测试,并在 100% 的测试用例中工作。如果其他人需要解决此问题,我很乐意清理并分享。
-
将代码发布为社区 wiki 答案,您可以自己接受它作为正确答案。
-
@Rich,我现在也在做类似的事情,你介意把这段代码贴在某个地方,这样我就可以看到你在说什么吗?
标签: ios actionscript-3 apache-flex flash-builder flex4.5