GameCenter制作初步完成,另附landscape问题解析


最近努力参考着

这篇文章

http://www.cnblogs.com/andyque/archive/2011/06/24/2088383.html

及这篇文章

http://www.cocoachina.com/gamedev/misc/2010/1022/2229.html

再结合iOS的帮助文档,将GameCenter部分整合进了游戏。

 

在这个过程中遇到一些问题,在这里都加以说明

 

关于Game Center Welcome通知条翻转问题:

一开始遇到了一个本来我游戏是横屏,但Game Center的登录通知(welcome back xxx)却按照portait的方式显示了出来,搜索攻略无果,只好按照iOS官方文章揣摩。

首先Game Center的通知类似于开启了一个新线程去处理接收返回通知的信息,当游戏运行起来后,在主线程发一个消息去获取Game Center登录信息,之后游戏主线程正常运行,而消息在认证后返回,这个消息会根据当前的app翻转状态弹消息,我的初始化步骤是:

[[GCGameCenter sharedInstance] authenticateLocalUser];
    
    
[window addSubview:viewcontroller.view];

之前有强制设置Status Bar屏幕向右翻转的(同时屏幕也会强制向右翻转)

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];

但由于后面加入了根据屏幕翻转状态调节,故去掉了这一句。

于是在通知返回的时候便找不到当前的Status Bar的翻转状态了。(Welcome back通知应该是根据当前应用的Status Bar的翻转状态来调整自己的显示方式的[猜测])

于是添加了两句强制状态条状态置位的操作后,问题解决,具体代码如下:

[[GCGameCenter sharedInstance] authenticateLocalUser];
    
    
[window addSubview:viewcontroller.view];
    
if(isRLeft)
{
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];
} else 
{
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
}


 

关于屏幕翻转

 

由于使用openGL对2D进行渲染,所以在调用ViewController的shouldAutorotateToInterfaceOrientation时,如果返回YES则总会旋转出错。

最后的解决办法是shouldAutorotateToInterfaceOrientation函数永远返回false,只在shouldAutorotateToInterfaceOrientation函数里对是否翻转进行判断,然后用一个bool变量表明是否翻转到left or 非left(right).之后在openGL渲染前,rotate OpenGL的渲染即可。

这样做的坏处是无法显示iOS那个本身的那个系统旋转动画,而是当屏幕拧过来是,立刻旋转刷新过来。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值