2012-07-18 68 views
0

我一直在工作与游戏中心最近(成绩),我只知道怎么做基础分数的成绩。我该如何做这样的事情?游戏中心IBAction为成就

-(IBAction) { 

//Unlock Achievement 

} 

我了解除此之外关于游戏中心的一切。谢谢!

+0

你到底是什么意思?一个'IBAction'只是定义了一个附加在界面元素上的动作。您是否尝试创建一个可以解锁成就的按钮或其他UI元素? – 2012-07-18 19:54:50

+0

我只想用一个按钮来解锁它。 – 2012-07-18 21:56:33

回答

1

这里有两种方法可以从一个按钮创建一个IBAction为:

编程:

UIButton *theButton = [[UIButton alloc] initWithFrame:CGRectMake(160, 240, 50, 20)]; 

[theButton addTarget:self action:@selector(unlockAch:) forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:theButton]; 

然后创建方法:

-(IBAction)unlockAch:(id)sender 
{ 
    //Unlock code 
} 

,也可以使用界面生成器做。创建按钮并按住Ctrl键,单击该按钮,然后拖入.h文件。你会得到一个弹出窗口,允许您创建一个动作,并给它一个名字:

enter image description here

然后界面生成器将下降到您的.h和.m文件,它会连接,并准备就绪!

enter image description here

+0

那不是问题,我知道如何设置IBAction,但我不知道解锁成就的代码。 – 2012-07-18 22:15:57

+0

从你的描述听起来像是你已经有成就的工作已经和你现在想弄清楚如何使IBAction为。只需在IBAction中打个电话,即可解锁您的成就。 – 2012-07-18 22:18:39

0

好吧,首先,我建议你使用一个单独的辅助类(姑且称之为GCAssistant)来处理游戏中心的具体行动。就像在this教程中解释的一样。

在类的头,定义关卡ID的,这样它更容易提交当你编码的成就;如下图所示:

#define kAchievementChainer @"1C" 
#define kAchievementBoardClear @"1A" 
#define kAchievement7Games @"1B" 
#define kAchievement77Games @"1D" 
#define kAchievementBreakAll @"1E" 
#define kAchievementMultiplayer @"1F" 

在辅助类,这是我用提交成绩的方法:如果一个成就是前递交

-(void) reportAchievementWithID:(NSString*) AchievementID { 

[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) { 

    if(error) NSLog(@"error"); 

    for (GKAchievement *ach in achievements) { 
     if([ach.identifier isEqualToString:AchievementID]) { //already submitted 
      NSLog(@"Already submitted"); 
      return ; 
     } 
    } 

    GKAchievement *achievementToSend = [[GKAchievement alloc] initWithIdentifier:AchievementID]; 
    achievementToSend.percentComplete = 100; 
    achievementToSend.showsCompletionBanner = YES; 
    [achievementToSend reportAchievementWithCompletionHandler:NULL]; 

}]; 

} 

这个方法检查;如果不是,则提交。因此,在项目的任何地方,你可以(只要该类GCAssistant进口)做的事:

[[GCAssistant sharedInstance] reportAchievementWithID:kAchievementChainer]; 

这不是在文档中,我也根本不知道这个,直到我看了WWDC 2012米的影片,但iOS 5中如果出现错误,会照顾重新提交评分/成就。因此,您不必担心手动存储未提交的iOS 5及以上版本等。

对于你的问题,你可能已被人猜测,所有你需要做的就是调用:

[[GCAssistant sharedInstance] reportAchievementWithID:kYourAchievementID]; 

IBAction方法。祝你好运,让我知道如果你有任何问题。