【问题标题】:Cannot make a static reference to the non-static method getApiClient() from the type BaseGameActivity无法从 BaseGameActivity 类型对非静态方法 getApiClient() 进行静态引用
【发布时间】:2014-03-27 08:45:55
【问题描述】:

我正在努力在游戏中实现 Play 游戏服务,但在尝试将 gamePanel 中的分数提交到排行榜时,我一直遇到问题。我无法在任何地方运行该方法,除了扩展 BaseGameActivity 的 GameActivity 如果我尝试在其他地方调用它,我会收到上面的错误。

提交分数的方法

public class GameActivity extends BaseGameActivity implements View.OnClickListener{
static void updatePlayThingies(){
    int distance= MainGamePanel.Squirrel.getDist();
    if(gameover==true){
        Games.Leaderboards.submitScore(getApiClient(), "Leaderboard_id", distance);
    }

}

需要调用 updatePlayThingies 的游戏逻辑

public class Squirrel{
private int distance = 0;
public void phys(){
 if (speedx==0){
bouncecheck=0;
//ball stopped
//reset stats and move ball back to launcher
GameActivity.gameover=true;
GameActivity.paused=true;
    GameActivity.updatePlayThingies();
}
}

【问题讨论】:

  • getApiClient 只能在扩展 BaseGameActivity 的类中访问。
  • 为什么不搜索“无法对非静态方法进行静态引用”。有很多关于它的问题,阅读答案广告,它将让您完全了解您正在尝试做什么以及为什么它不起作用。
  • 我在一个线程中运行游戏逻辑,从我的游戏活动中调用它的唯一方法是使 updateplaythiniges 成为静态的,这会破坏该代码或在我的线程中构建一个新的游戏活动也可以工作。

标签: java android google-play-services


【解决方案1】:

你可以试试这个:

static void updatePlayThingies(GoogleApiClient apiClient){
    int distance= MainGamePanel.Squirrel.getDist();
    if(gameover==true){
        Games.Leaderboards.submitScore(apiClient, "CgkIkfSPtJocEAIQAQ", distance);
    }

然后像 tis 一样调用 updatePlayThingies:

updatePlayThinges(getApiClient());

【讨论】:

    【解决方案2】:

    你可以试试这个:

    static void updatePlayThingies(){
    int distance= MainGamePanel.Squirrel.getDist();
    if(gameover==true){
        Games.Leaderboards.submitScore(
          newGoogleApiClient().getApiClient(), 
          "CgkIkfSPtJocEAIQAQ", distance);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-15
      • 2015-08-18
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多