使用cocos2d-x(c ++)获取设备方向的最佳方法是什么?
我的Android / iOS应用程序支持所有4种设备方向,比知道它是横向还是纵向更重要,我想知道它是否颠倒。
我必须在CCLayer中知道。
更新
我正在尝试获得正确倾斜和左倾斜的事件。为此,我正在计算设备的握持角度。但是,我需要知道设备的方向,以便能够知道我实际上是向左还是向右倾斜。
答案 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方法,这是另一个球类游戏。