在AIR编写的Android/iOS程序中控制设备方向
2012-07-13更新:加入iOS设备测试。
怎样在使用AIR编写的Android程序中控制设备的方向呢?
例如有一款游戏,希望无论在平板电脑上,还是在手机中,都以竖屏(垂直方向)的方式启动,而且无论如何都不可能横屏。我们可以这样设置:
在应用程序描述符中,将autoOrients设置为true,将aspectRatio设置为portrait。
在应用程序描述符中,将autoOrients设置为false,将aspectRatio设置为portrait。
在Android平台上,将autoOrients设置为true或者false,是同样的效果。而在iOS平台上,必须将autoOrients设置为false才能得到上面的效果。
本文测试平台:
- Android手机:Moto Atrix 2,Android 2.3.6
- Android平板:Acer Iconia Tab A500,Androd 4.0.3
- iOS手机:iPhone 4
- iOS平板:iPad 2
- AIR版本:3.3
下表中描述了autoOrients和aspectRatio这两个值的所有组合状态,以及手机的“锁定旋转”功能对它们的影响(这活儿相当苦逼……)。
平台 | autoOrients | aspectRatio | 表现 | 锁定功能 |
---|---|---|---|---|
Android | true | portrait | 启动后转到垂直方向 | 无效 |
Android | true | landscape | 启动后转到水平方向 | 无效 |
Android | true | any | 启动后转到设备的当前方向 | 有效 |
Android | true | 不设置 | 启动后转到设备的当前方向 | 有效 |
Android | false | portrait | 启动后转到垂直方向 | 无效 |
Android | false | landscape | 启动后转到水平方向 | 无效 |
Android | false | any | 启动后转到设备的当前方向 | 不确定 |
Android | false | 不设置 | 启动后转到设备的默认方向 | 无效 |
iOS | false | portrait | 启动后转到垂直方向 | 无效 |
iOS | true | portrait | 启动后转到设备的当前方向 | 有效 |
iOS | false | landscape | 启动后转到水平方向 | 无效 |
iOS | true | landscape | 启动后转到设备的当前方向 | 有效 |
名词解释:
- 垂直方向:设备的长边垂直于地面的方向;
- 水平方向:设备的短边垂直于地面的方向;
- 当前方向:设备当前的方向,取决于你怎么拿它;
- 默认方向:对于平板电脑来说,水平方向是默认方向,手机则相反;
- 锁定功能无效:无论是否开启锁定,都不会影响程序的方向;
- 锁定功能有效:参见上一句;
- 锁定功能不确定:这个比较坑爹,在我的平板上时有时无;但对于作出这种搭配(
autoOrients=false,aspectRatio=any
)的程序员,我只能说两个字:你相当手贱。
有点标题党了,说是控制设备方向,其实只是控制设备的初始方向而已。
如果在运行时要控制设备的方向,在stage的方法中找找吧……
参考:http://blogs.adobe.com/airodynamics/2012/05/22/stage-aspectratio-enhancements/
- 文章ID:1631
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/rotation-control-in-air/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。