AS3 / AIR:如果手机使用人像,如果平板使用风景?
好的,我写了一个简单的DeviceCapabilites类,可以检查设备是手机还是平板电脑等。
但我需要能够说,如果用户在手机上,它应该是肖像模式,如果在平板上,我只想使用横向模式...任何想法?
编辑:为了说清楚,我想在手机上将方向锁定到肖像模式,然后在平板电脑上使用横向。
像这样?
stage.autoOrients = false;
if(YourDeviceCapsClass.isTablet)
stage.setOrientation(StageOrientation.ROTATED_LEFT);
else
stage.setOrientation(StageOrientation.DEFAULT);
您恐怕必须将BarışUşaklı的setOrientation()
方法提及与一些更多的逻辑结合起来。 正如我在他对我的评论中提到的那样, StageOrientation.DEFAULT
指的是设备的默认方向,但您不知道这是横向还是纵向。
幸运的是,有一个简单的方法来解决这个问题。 您只需查看设备是否处于默认/颠倒方向,并检查宽度/高度。
var defaultPositionIsLandscape:Boolean = false;
if ( stage.orientation == StageOrientation.DEFAULT || stage.orientation == StageOrientation.UPSIDE_DOWN ) {
defaultPositionIsLandscape = stage.stageWidth > stage.stageHeight;
}
else {
defaultPositionIsLandscape = stage.stageWidth < stage.stageHeight;
}
if ( isTablet ) {
if ( defaultPositionIsLandscape ) {
stage.setOrientation( StageOrientation.DEFAULT );
}
else {
stage.setOrientation( StageOrientation.ROTATED_LEFT );
}
}
这个逻辑有点混乱,所以你可以把它清理一下,但这是发生什么的一般要点。 我个人会让最上面的部分成为您的DeviceCapabilities类中的静态只读getter,以便于访问。 如果它处于StageOrientation.UPSIDE_DOWN
您还需要将其展开以避免旋转(因为从技术角度而言,这是您想要的正确方向,只是上下颠倒)
我没有一个答案,但我想保存别人一些时间。 在ipad上测试时,Josh发布的上述代码将始终导致“defaultPositionIsLandscape”为false :(
链接地址: http://www.djcxy.com/p/37953.html上一篇: AS3/AIR: If phone use portrait, if tablet use landscape?