如何获取设备方向

How to get device orientation

本文关键字:方向 获取 何获取      更新时间:2023-10-16

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

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

我必须从CCLayer内部了解。

更新

我正在尝试获得向右倾斜和向左倾斜的事件。为了做到这一点,我正在计算设备被固定的角度。然而,我需要知道设备的方向,才能知道我是真的向左倾斜还是向右倾斜。

虽然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,则仅在所有这些方向上旋转)

注:在人像模式下倒置手机不是一个好的做法,只有在平板电脑上才是可以接受的。。(苹果甚至可能因此拒绝你的应用程序)

如果你想知道如何使用它,请告诉我,但谷歌关键词会给你用法。。

快速谷歌搜索后:

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

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

UDPDATE:

我不认为你可以按照你想要的方式从cocos2d-x中确定方向。然后我想到的唯一解决方案是通过jni进入java,并使用android的方法来确定当前的方向。这是一个链接关于如何确定所有4个方向。

至于如何从c++中调用java方法,那是另一回事了。