2012. 7. 18. 21:34ㆍ프로그래밍/Cocos2dX
게임을 만들다 보면 180도로 단말기를 회전할때마다 그에 따라서 화면도 회전이 되어야 합니다.
개인적으로 필요성은 못느끼곤합니다. 왜 이렇게 회전을 해야 하는 것일까...?
하지만 때로는 편리할때도 있습니다.
안드로이드 에서 [android:screenOrientation="sensor"]를 사용하면 단말기를 어느 방향으로 회전을 하든간에 게임화면이 회전됩니다. 하지만 단점으로는 landscape용 게임을 세로로 단말기를 들게되면 화면이 짤리는 현상이 발생됩니다.
따라서 우리가 필요로 하는 방식은 wide로만 상하로 180도만 회전하도록 하는 것이 필요합니다. 즉 매 90도마다 회전되는 것은 필요치 안습니다.
다음과 같이 설정하면 2.2미만은 Landscape로 화면이 고정이되고 2.3부터는 180도로 회전이 적용됩니다.
안드로이드 버전 2.3부터만 지원한다고 하면 android:screenOrientation="sensorLandscape"를 사용하면 됩니다.
AndroidManifest.xml 파일의 경우 다음과 같이 수정하면 됩니다.
<activity android:name=".SWAT"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
그리고 Java 소스에서는 다음과 같이 추가해주면 됩니다.
메인 클래스에서 protected void onCreate(Bundle savedInstanceState)함수에 추가했습니다.
public static final int ANDROID_BUILD_GINGERBREAD = 9;
public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6;
if (Build.VERSION.SDK_INT >= ANDROID_BUILD_GINGERBREAD) {
setRequestedOrientation(SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
찾아보니 SCREEN_ORIENTATION_SENSOR_LANDSCAPE를 2.3부터 지원하더군요. 그래도 요즘 대부분의 고사양 스마트폰에서는 2.3정도는 지원하니 특별히 문제는 없을 듯 합니다.
구글 Play의 캐쥬얼 게임의 상위 OS버전입니다.
캐쥬얼만이 아닌 대부분의 카테고리들에서 비슷하게 통계가 잡히는 것 같습니다.
앱 개발에 조금이라도 도움되시기 바랍니다.
'프로그래밍 > Cocos2dX' 카테고리의 다른 글
Cocos2d-x에서 진동/음소거 모드에서 소리 출력 문제해결 방법 (0) | 2012.07.19 |
---|---|
Cocos2d-X에서 보안락 화면에서 게임 프로세스 처리방법. (0) | 2012.07.19 |
Cocos2d-x에서 java의 signature of a method를 알아내기 (0) | 2012.06.21 |
Cocos2d-x활용해서 Java에서 C++ 함수 호출하기 (0) | 2012.06.15 |
Flurry를 이용한 어플 사용자 통계분석하기. (0) | 2012.06.14 |