IOS6下cocos2d 1.0项目两个bug修复

无法正常游戏横屏

首先在你项目根目录找到AppController.m 类,然后找到如下代码:

// Set RootViewController to window  
[window addSubview: viewController.view]; 

然后将其替换成如下代码:

    // Set RootViewController to window  
     if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)  
     {  
         // warning: addSubView doesn't work on iOS6  
         [window addSubview: viewController.view];  
     }  
     else  
     {  
         // use this mehod on ios6  
        [window setRootViewController:viewController];  
    }  

最后在项目根目录的RootViewController.m文件中添加如下两个函数:

    - (NSUInteger) supportedInterfaceOrientations{  
        return UIInterfaceOrientationMaskLandscape;  
    }  
       
    - (BOOL) shouldAutorotate {  
        return YES;  
    }  

这样就可以了,其实就是判断一下机器的版本,使用不同的方法来解决!

GameCenter函数导致的崩溃

就是这个[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil];的问题,IOS 6之后变成了setAuthenticateHandler,解决代码如下:

        NSString *reqSysVer = @"6.0";
        NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
        if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
        {
            // Gamekit login for ios 6
            [[GKLocalPlayer localPlayer] setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {
                if (viewcontroller != nil) {
                    AppDelegate* delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
                    RootViewController* root = (RootViewController*)delegate.viewController;
                    [root presentViewController:viewcontroller animated:YES completion:nil];
                }else if ([GKLocalPlayer localPlayer].authenticated)
                {
                    //do some stuff
                    //成功处理
                    //切换用户时看是否要重新复制Plist文件
                    NSLog(@"成功");
                    NSLog(@"1--alias--.%@",[GKLocalPlayer localPlayer].alias);
                    //            NSLog(@"2--authenticated--.%d",[GKLocalPlayer localPlayer].authenticated);
                    //            NSLog(@"3--isFriend--.%d",[GKLocalPlayer localPlayer].isFriend);
                    NSLog(@"4--playerID--.%@",[GKLocalPlayer localPlayer].playerID);
                    NSLog(@"5--underage--.%d",[GKLocalPlayer localPlayer].underage);
                    //tempPalyID=[GKLocalPlayer localPlayer].playerID;
                }
            })];
        } else {
            // Gamekit login for ios 5
            //[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil];
            [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error){
                if (error == nil) {
                    //成功处理
                    //切换用户时看是否要重新复制Plist文件
                    NSLog(@"成功");
                    NSLog(@"1--alias--.%@",[GKLocalPlayer localPlayer].alias);
                    //            NSLog(@"2--authenticated--.%d",[GKLocalPlayer localPlayer].authenticated);
                    //            NSLog(@"3--isFriend--.%d",[GKLocalPlayer localPlayer].isFriend);
                    NSLog(@"4--playerID--.%@",[GKLocalPlayer localPlayer].playerID);
                    NSLog(@"5--underage--.%d",[GKLocalPlayer localPlayer].underage);
                    //tempPalyID=[GKLocalPlayer localPlayer].playerID;
                }else {
                    //错误处理
                    NSLog(@"失败  %@",error);
                }
            }];
        }

注:以上是在Xcode4.5、IOS 6、cocos2d-iphone-1.0的情况!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值