将Cocos 2d方向景观更改为纵向

时间:2012-01-27 13:27:08

标签: ios cocos2d-iphone orientation

我有两个视图,其中一个是横向的,另一个是纵向的。默认方向是横向。当我使用

将视图从横向更改为纵向时
[[CCDirector sharedDirector] setDeviceOrientation:CCDeviceOrientationLandscapeRight];

虽然图形旋转完美,但我遇到触摸屏问题。有人可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:3)

您使用的是最新的cocos2d模板吗? [[CCDirector sharedDirector] setDeviceOrientation:CCDeviceOrientationLandscapeRight];无法使用的原因是默认情况下,它允许UIKit (RootViewController)处理轮换,请阅读第77-84行的注释。您的代码所做的是更改CCDirector方向,而不是RootViewController,因此您的触摸位置无法正确翻译。

您是否将Apple标准UIKit与cocos2d混合使用?如果您没有一个非常简单的解决方案,只需转到GameConfig.h

更改这些行

#if defined(__ARM_NEON__) || TARGET_IPHONE_SIMULATOR
#define GAME_AUTOROTATION kGameAutorotationUIViewController

#if defined(__ARM_NEON__) || TARGET_IPHONE_SIMULATOR
#define GAME_AUTOROTATION kGameAutorotationCCDirector

P.S根据您设置项目的方式,更改自动旋转处理程序可能/可能不起作用。

答案 1 :(得分:1)

实现正确的方向很简单,也很简单。您只需编辑RootViewController实现:只需修改它的-willChangeToInterfaceOrientation ...方法,即可为应用程序中所需的方向返回“YES”。例如,将所有可能性的返回值更改为

return ( (interfaceOrientation == UIInterfaceOrientationPortrait) ||    
(interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) );

完成后,只有横向朝向纵向时,您的应用才会旋转。您的应用程序(在这种情况下)仅支持纵向方向。 要正确地自动旋转您的应用以响应从肖像更改为portraitUpsideDown(反之亦然),只需编辑以下行以使用适当的值配置您的CCDirector实例:

if( interfaceOrientation == UIInterfaceOrientationPortrait ) {
    [[CCDirector sharedDirector] setDeviceOrientation:     
kCCDeviceOrientationPortraitUpsideDown];
} else if( interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
    [[CCDirector sharedDirector] setDeviceOrientation: 
kCCDeviceOrientationPortrait];
}

模板项目中默认方法实现的评论中提到的所有内容!

不要忘记编辑应用的info.plist以包含密钥的适当值 -InitialInterfaceOriatation -SupportedInterfaceOrientations

您通常不需要更改应用委托级别和GameConfig.h中的任何内容。

而且......你去了!

答案 2 :(得分:0)

这很简单,只需将触摸点转换为GL

即可解决我的问题
CGPoint convertedLocation = [[CCDirector sharedDirector]convertToGL:point];

答案 3 :(得分:0)

[startUpOptions setObject:CCScreenOrientationPortrait forKey:CCSetupScreenOrientation];

我刚在函数(BOOL)应用程序中的appdelegate.m文件中添加了上面的代码:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions并且它有效