我正在开发多级Android游戏,我希望在登录后拉出高分。 我这样做:
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 :(得分: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,使用构造函数将其保存在类中,并且正如你在课堂上看到的那样,有一种方法可以让你在结果中获得排行榜。