如何获得设备方向

时间:2013-12-16 16:57:42

标签: android c++ iphone cocos2d-x

使用cocos2d-x(c ++)获取设备方向的最佳方法是什么?

我的Android / iOS应用程序支持所有4种设备方向,比知道它是横向还是纵向更重要,我想知道它是否颠倒。

我必须在CCLayer中知道。

更新

我正在尝试获得正确倾斜和左倾斜的事件。为此,我正在计算设备的握持角度。但是,我需要知道设备的方向,以便能够知道我实际上是向左还是向右倾斜。

2 个答案:

答案 0 :(得分:2)

虽然cocos2d-x是跨平台的,但很少有东西仍然非常依赖平台,例如,如果你看到CCFileUtils,我们有单独的iOS,Android等实现文件,跨平台维护着一个标头,

牢记这一点,

在Android中,您可以使用常量

来获取设备方向
Surface.ROTATION_0 (no rotation)
Surface.ROTATION_90
Surface.ROTATION_180
Surface.ROTATION_270. 

您可以致电Display.getRotation()来获取 (如果设置了android:screenOrientation:fullSensor

,它只会在所有这些方向上旋转

在iOS中, 您可以使用

获取值
UIDeviceOrientationPortrait
UIDeviceOrientationPortraitUpsideDown
UIDeviceOrientationLandscapeLeft
UIDeviceOrientationLandscapeRight

(如果,supportedInterfaceOrientations方法返回UIInterfaceOrientationMaskAll),它只会在所有这些方向上旋转

注意: 在纵向模式下旋转手机并不是一个好习惯,只能在平板电脑上接受它...(Apple可能会因此拒绝您的应用)

如果你想知道如何使用它,请告诉我,但谷歌搜索关键字将为你提供使用..

答案 1 :(得分:1)

快速谷歌搜索后:

http://www.cocos2d-x.org/wiki/Device_Orientation

http://www.cocos2d-x.org/forums/6/topics/36414

<强> UDPDATE:

我认为您无法从cocos2d-x确定您想要的方向。 然后我想到的唯一解决方案是通过jni进入java并使用android的方法来确定当前的方向。这是一个 link 关于如何确定所有4个方向。

至于如何从c ++调用java方法,这是另一个球类游戏。

相关问题