2014-04-02 47 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

相關問題