2011年10月3日月曜日

Cocos2dでLandscapeモード

Cocos2dで画面を横向き(Landscape)固定にするには、おおまかに二通りあります。
  1. UIViewController を使う
  2. CCDirector を使う
UIViewController を使う方法は、UIKitおなじみ下記メソッドで目的のOrientationのみ、YESを返します。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
 return ( interfaceOrientation == UIInterfaceOrientationLandscapeRight );
}

CCDirector を使う方法は、AppDelegateの下記メソッドなどで、目的のOrientationをCCDirectorに設定します。
- (void)applicationDidFinishLaunching:(UIApplication*)application
{
 [[CCDirector sharedDirector] setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];
}
CCDirectorを使って設定する時に注意しなければならないのは、先の shouldAutorotateToInterfaceOrientation メソッドでは、UIInterfaceOrientationPortrait の時にYESを返さなければいけないという事と、CCDirectorに設定している kCCDeviceOrientationLandscapeLeft 値は UIDeviceOrientation と同じで、Landscapeモードの場合は UIInterfaceOrientation のLeftとRightが反対の意味になるということです。(UIDeviceOrientationとUIInterfaceOrientationの関係)

どちらが良い方法かと言えば、それは作るアプリによると思います。
例えば AdMaker などの広告を、自身の作成したViewに重ね合わせる時、広告のOrientation は、その UIViewController に依存します。
GameKit フレームワークのデフォルトViewは、すべて GameKit の UIViewController を使用するので、どちらの方法を使おうとも Orientation は正しく判断されます。

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...