2014-04-02 49 views
4

我工作的一个多级的Android游戏,我想登录后拉高分 我这样做:如何从Android的Google Play游戏API中拉出多个排行榜?

Games.Leaderboards.loadCurrentPlayerLeaderboardScore(getApiClient(), getString(LEADER_BOARDS[i]), 
       LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC) 
       .setResultCallback(this); 

但回调不给我的排行榜ID:

@Override 
public void onResult(LoadPlayerScoreResult res) { 

} 

我只拿到分数(res.getScore())。 那么,我必须为我的25个关卡创建回调,还是有更好的解决方案?

这并不工作,以及:

for (int i = 0; i < 25; i++) 
    Games.Leaderboards.loadCurrentPlayerLeaderboardScore(getApiClient(), getString(LEADER_BOARDS[i]), 
       LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC) 
       .setResultCallback(new ResultCallback<LoadPlayerScoreResult>() { 

        @Override 
        public void onResult(LoadPlayerScoreResult res) { 
         // can't use variable i here 
        } 
    }); 
+0

我认为你的方法是关闭的。为什么你需要排行榜ID,如果你已经拥有它。你正在将它输入到方法中,你为什么需要它。 – Ogen

+0

因为我必须知道返回哪个结果(对于具有一个onResult侦听器的第一种方法)。当然,如果我复制它25次,我知道排行榜ID,但应该有一个比这更好的解决方案。 – lukas1994

+0

那么你的目标究竟是什么?你想以最有效的方式从25个不同的排行榜获得一个玩家的分数? – Ogen

回答

1

定义您的Java文件这个内部类:

public class Leaderboard implements ResultCallback<Leaderboards.LoadPlayerScoreResult> { 

     private Leaderboard(String id) { 
      leaderboardId = id; 
     } 

     private String leaderboardId = ""; 

     @Override 
     public void onResult(LoadPlayerScoreResult arg0) { 
      // TODO Auto-generated method stub 
      System.out.println(leaderboardId); 
     } 

} 

现在使用此代码:

for (int i = 0; i < 25; i++) { 
    Games.Leaderboards.loadCurrentPlayerLeaderboardScore(getApiClient(), getString(LEADER_BOARDS[i]), 
    LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC) 
    .setResultCallback(new Leaderboard(getString(LEADER_BOARDS[i]))); 
} 

现在让我解释这是如何工作的。 排行榜类实现ResultCallback所以它在setResultCallback方法中用于获得玩家分数后。现在,在for循环中,每次获得分数的调用都将不同的类排行榜的对象设置为结果回调,并且每个对象都将被赋予唯一的排行榜ID,并使用构造函数保存在类中,并且就像你在课堂上看到的那样,有一种方法可以让你在onresult中返回leaderboardid。

+0

太棒了。谢谢! – lukas1994

+0

@ lukas1994等一下,实际上工作? – Ogen

+0

哈哈,我没有测试它,但它应该工作;)我会让你知道。 – lukas1994

相关问题