【问题标题】:Cocos 2d and Game Center (Leaderboard issue)Cocos 2d 和 Game Center(排行榜问题)
【发布时间】:2010-11-01 10:58:19
【问题描述】:

浏览后实在找不到答案(cocos2d with game center的话题不多)

我目前设置了我的沙盒游戏中心并且我能够进行身份验证,但是当我创建排行榜时,我假设它是横向启动的。尝试旋转视图但没有。我的游戏只在横向模式下运行。我正在运行 beta 3 0.99.5。这是我的代码供参考。

tempVC = [[RootViewController alloc] init];

GKLeaderboardViewController *leaderboardController = [[[GKLeaderboardViewController alloc] init] autorelease];

if (leaderboardController != nil)
{
    leaderboardController.leaderboardDelegate = self;
    [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];
    [tempVC presentModalViewController:leaderboardController animated:YES];
}

真的很感激任何帮助。没有得到 cocos2d 板的响应。

编辑:

已通过将自动旋转更改为 CCDirector 来修复。此外,在显示游戏中心后,我遇到了失去多点触控功能的问题。董事会的解雇应该使用这个:

[tempVC dismissModalViewControllerAnimated:YES];
[tempVC.view.superview removeFromSuperview];

【问题讨论】:

  • 谢谢...我无法让我的排行榜或成就被解雇,您上面的编辑为我解决了这个问题!

标签: iphone objective-c uiview cocos2d-iphone game-center


【解决方案1】:

=我遇到了这个问题,几天来一直在扯头发,但我最终让它在横向模式下完美运行,无论用户以何种方式握住手机。这有点奇怪,如果有人知道更好,请告诉我!

1 - 我必须有(调用排行榜的控制器的)纵向视图,在我的例子中是在 IB 中完成的

2 - 仅当您支持纵向时才有效(即使它看起来像横向)-

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

3 - 然后您需要调整和旋转排行榜的大小 -

[self presentModalViewController: leaderboardController animated: YES];

leaderboardController.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(0.0f));
leaderboardController.view.bounds = CGRectMake(0, 0, 480, 320);
leaderboardController.view.center = CGPointMake(240, 160);

4 - 嘿,快!它工作正常。希望它也对你有用。

【讨论】:

    【解决方案2】:

    已通过将自动旋转更改为 CCDirector 来修复。此外,在显示游戏中心后,我遇到了失去多点触控功能的问题。董事会的解雇应该使用这个:

    [tempVC dismissModalViewControllerAnimated:YES];
    [tempVC.view.superview removeFromSuperview];
    

    【讨论】:

    • 提供我的评论作为答案...见下文。
    • “通过将自动旋转更改为 CCDirector 来修复”这是什么意思?
    【解决方案3】:

    如果它可能有帮助,我发现仅仅从超级视图中删除 GKLeaderboard 是不够的,所以在你使用之后

    [tempVC.view.superview removeFromSuperview];

    你也应该使用

    [tempVC 发布];

    如果没有这个,GKLeaderboardViewController 会做一些奇怪的事情,比如在第二次调用之后它不会在视图中自动旋转。

    希望对你有帮助

    【讨论】:

      【解决方案4】:

      在 cocos2d v1.0.1 上使用这个,截至 2012 年 4 月 19 日的最新稳定版本,这实际上不允许 vc 动画消失。可能改为运行:

      [tempVC dismissModalViewControllerAnimated:YES];
      [[[tempVC view] superview] performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1.2];
      [tempVC performSelector:@selector(release) withObject:nil afterDelay:1.3];

      【讨论】:

      • 很好的答案,但是从最近的 iOS 更新(iOS 4?)开始,您现在可以在这种方法中使用块来减少 hacky:[vc dismissViewControllerAnimated:(BOOL) completion:^(void)completion]; 例如:[tempVC dismissViewControllerAnimated:YES completion:^{ [tempVC.view removeFromSuperview]; [tempVC release]; }];
      【解决方案5】:

      正确的是实现并包含这个类别:

      .h

      #import <GameKit/GameKit.h>
      
      @interface GKLeaderboardViewController (additions)
      -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation;
      -(NSUInteger)supportedInterfaceOrientations;
      @end
      

      .m

      #import "GKLeaderboardViewController+additions.h"
      
      @implementation GKLeaderboardViewController (additions)
      -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
          return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
      }
      -(NSUInteger)supportedInterfaceOrientations {
          return UIInterfaceOrientationMaskLandscape;
      }
      @end
      

      【讨论】:

      • 您可能希望在GKGameCenterViewControllerGKAchievementViewController 和匹配控制器上创建相同的类别。
      【解决方案6】:

      当我的 Cocos2D 游戏在横向时,在 iPad 上以纵向启动 GC 时遇到了同样的问题。通过从 rootViewController 而不是 UIViewController 派生我的 GameKit 控制器来解决此问题。

      @interface GCController :RootViewController {

      【讨论】:

      • 不,对我不起作用。同样的问题。看起来实际的游戏中心视图是横向转向的。所以我有一个横向的游戏,排行榜显示覆盖不到一半的屏幕并延伸到屏幕之外。 (不确定这是否有意义?)我完全不知所措。
      【解决方案7】:

      一旦我遇到同样的问题,我就关注了对我有用的 Connor Denman 的博客这是链接
      http://connordenman.com/post/15554858770/presenting-a-modal-view-controller-in-cocos2d-iphone

      【讨论】:

        【解决方案8】:

        GKLeaderboardViewController 用于显示默认排行榜,这是一个仅纵向视图。要显示横向排行榜,您必须实现自己的自定义排行榜视图。

        编辑:自从最初写这篇文章以来,GKLeaderboardViewController 已经得到改进,可以在任何方向上正常工作。

        【讨论】:

        • 所以像愤怒的小鸟这样的游戏中的那个是完全定制的?我不确定我是否完全理解。
        • Angry Birds 使用 Crystal SDK 作为其排行榜。 crystalsdk.com
        • 嗯,这似乎并不完全正确,除非您在谈论其他事情。在摆弄了一些 Cocos2d 默认旋转之后,我让排行榜在横向模式下正确显示。但是,我在下一个场景中的 UIScrollView 显示不正确。不知道发生了什么。
        • 你是如何让排行榜以横向模式显示的?
        • 跟Cocos2d自动旋转有关。如果我使用 CCDirector 自动旋转,它会在横向启动排行榜。但是,一旦被解雇,我就会遇到其他问题,例如多点触控不再起作用。如果我使用默认的 UIView 旋转,则排行榜以纵向启动但侧向转动。我没有做任何轮换努力来改变它。
        猜你喜欢
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 2014-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多