编写苹果游戏中心应用程序(翻译 1.16 向玩家显示成就)

 

1.16 向玩家显示成就

问题

    你需要使用图形用户界面向本地玩家显示其已经获得或已经开启的成就。

解决方案

    使用GKAchievementViewController类。

讨论

    游戏中心可以构造内建成就界面。你所要做的是建立一个使用视图控制器的iOS程序(在iOS 4 Programming Cookbook中有详细地讲解)。

    让游戏中心构造内建成就界面的步骤如下:

    1. 确保在程序中拥有一个视图控制器;确保视图控制器符合GKAchievementViewControllerDelegate协议。

    2. 验证本地玩家(条目1.5)。

    3. 分配和实例化一个GKAchievementViewController对象,使用视图控制器的presentModalViewController:animated:实例方法向玩家显示。

    4. 在视图控制器中实现GKAchievementViewControllerDelegate协议的achievementViewControllerDidFinish:托管方法。

    5. 在achievementViewControllerDidFinish:的实现中,使用视图控制器的dismissModalViewControllerAnimated:实例方法废除成就视图控制器。

    GKAchievementViewController类的实例有一个重要的属性,叫作achievementDelegate。它将从成就视图控制器接收托管消息。使用这些托管方法以废除成就视图控制器以及其它事物。

    看看向当前本地玩家显示其所有成就的示例:

        - (void)achievementViewControllerDidFinish:
            (GKAchievementViewController *)viewController{

            /* We are finished here */
            [self dismissModalViewControllerAnimated:YES];
        }

        - (void) viewDidLoad{

            [super viewDidLoad];

            GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

            [localPlayer authenticateWithCompletionHandler:^(NSError *error) {

                if (error == nil){

                    GKAchievementViewController *controller =
                        [[GKAchievementViewController alloc] init];

                    [controller setAchievementDelegate:self];
                    [self presentModalViewController:controller
                                            animated:YES];
                    [controller release];

                 } else {
                    NSLog(@"Could not authenticate the local player. %@", error);
                }

             }];

         }

    运行程序,加载视图控制器之后,可以看到和图1-16类似的结果。


图 1-16 iOS模拟器中的成就视图控制器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值