首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Scoreloop服务器检索分数时没有返回列表

从Scoreloop服务器检索分数时没有返回列表
EN

Stack Overflow用户
提问于 2013-09-30 08:34:25
回答 1查看 110关注 0票数 1

我正在尝试从Scoreloop服务器中检索设备用户的得分。这是一个AndEngine游戏。我尝试了以下几点:

代码语言:javascript
复制
observer = new RequestControllerObserver() {
        @Override
        public void requestControllerDidFail(RequestController arg0,
                Exception arg1) {
            // TODO Auto-generated method stub

        }

        @Override
        public void requestControllerDidReceiveResponse(
                RequestController requestController) {
            // TODO Auto-generated method stub
            myScoresController = (ScoresController) requestController;
            myScoresController.setSearchList(SearchList
                    .getGlobalScoreSearchList());
            myScoresController.setMode(mode);
            myScoresController.setRangeLength(20);
            myScoresController.loadRangeForUser(Session.getCurrentSession()
                    .getUser());
            Log.i("score", "" + myScoresController.getScores().get(0).getResult());
            // List<Score> retrievedScores = myScoresController.getScores();
        }

Log.i()甚至没有出现。我也试过这个:

代码语言:javascript
复制
observer = new RequestControllerObserver() {

        @Override
        public void requestControllerDidFail(RequestController arg0,
                Exception arg1) {
            // TODO Auto-generated method stub

        }

        @Override
        public void requestControllerDidReceiveResponse(
                RequestController requestController) {
            // TODO Auto-generated method stub
        }
            myScoresController = new ScoresController(observer);
            myScoresController.setSearchList(SearchList
                    .getGlobalScoreSearchList());
            myScoresController.setMode(mode);
            myScoresController.setRangeLength(20);
            myScoresController.loadRangeForUser(Session.getCurrentSession()
                    .getUser());
            Log.i("score", "" + myScoresController.getScores().get(0).getResult());
            // List<Score> retrievedScores = myScoresController.getScores();

我正试图得到名单的第一个元素,然后是得分结果。但现在还没有名单。错误显示为:

代码语言:javascript
复制
java.lang.IndexOutOfBoundsException
java.util.Collections$EmptyList.get(Collections.java:102)

但我并没有同时尝试以上两种方法。当然有个错误,但我看不出来。

编辑:

我使用它的整个班级如下:

代码语言:javascript
复制
public class ScoreLoopUpdater implements Runnable {
private double score;
private int mode;
private RequestControllerObserver observer;
private ScoresController myScoresController = null;

public ScoreLoopUpdater(double _score, int _mode) {
    this.score = _score;
    this.mode = _mode;
}

public void run() {
    getGlobalHighscore();
    ScoreloopManagerSingleton.get().onGamePlayEnded(
            score, mode);
}

private void getGlobalHighscore() {
        //the above codes including observer go inside here.
    }

我是从一个场景打电话来的:

代码语言:javascript
复制
ScoreLoopUpdater scoreLoopUpdater = new ScoreLoopUpdater(theScore, theMode);
activity.runOnUiThread(scoreLoopUpdater);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-30 16:06:18

在举了几个例子之后,我终于想出了正确的方法:

代码语言:javascript
复制
private void getGlobalHighscore() {
    observer = new RequestControllerObserver() {

        @Override
        public void requestControllerDidFail(RequestController arg0,
                Exception arg1) {
            // TODO Auto-generated method stub

        }

        @Override
        public void requestControllerDidReceiveResponse(
                RequestController requestController) {
            // TODO Auto-generated method stub
            final ScoresController myScoresController = (ScoresController) requestController;
            Log.i("score", "" + myScoresController.getScores().get(0).getResult());
            // List<Score> retrievedScores = myScoresController.getScores();
        }

    };
    ScoresController myScoresController = new ScoresController(observer);
    myScoresController.setSearchList(SearchList
            .getGlobalScoreSearchList());
    myScoresController.setMode(mode);
    myScoresController.setRangeLength(20);
    myScoresController.loadRangeForUser(Session.getCurrentSession()
            .getUser());
}

只有getScores()应该在requestControllerDidReceiveResponse函数中调用,这意味着在收到响应后获得分数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19089753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档