2016-02-14 26 views
0

但libGDX無法識別'LevelChooser'快打「introscreen」'等待'lowerflag「curLevel」無法解析我想提出一個觸摸按鍵符號

public class TouchButton extends TextButton { 
    LevelChooser lc; 
    public TouchButton(String text, TextButtonStyle skin,Kombat game) { 
     super(text, skin); 
     this.lc=game.introScreen.lc; 
    } 
    @Override 
    public void act(float delta){ 
     wait+=delta; 
     if(lc.lowerFlag && lc.curLevel>0 && wait>delta*8) { 
      lc.curLevel--; 
      lc.level.setText("" + lc.curLevel); 
      wait=0f; 
     } 
    } 
} 

} 

這是我的創造方法:

less.addListener(new InputListener() { 
     @Override 
     public void touchUp(InputEvent event, float x, float y, 
          int pointer, int button) { 
      boolean touchdown = true; 


     } 

     public boolean touchDown(InputEvent event, float x, float y, 
           int pointer, int button) { 
      boolean touchdown = false; 

      return true; 
     } 

而且我也有這樣的:

less = new TouchButton("lower", style,game); 
+1

什麼是LevelChooser和Kombat?你創建了這些類嗎?如果是這樣,他們在什麼包? 'TouchButton'包是什麼包?您可能需要正確的導入語句才能把所有事情都掛鉤在一起。我建議你對包裝和進口報表進行一些研究。 –

回答

0

它只是意味着你的類有這些字段/變量的訪問權限。這可能是因爲幾件事情。

  • 你犯了一個錯字
  • 字段/變量不存在。
  • 您將該字段設置爲私有/受保護並嘗試從外部訪問
  • 您沒有指定可見性(私有/公共),這意味着它只對同一包中的類可見。

我建議你製作LevelChoosercurLevel public並查看它是否有訪問權限。

如果你想正確地編程你,然後再次使這個變量變爲私有的,並且如果你想改變它,就可以獲得一個getter和/或setter。

private int currentLevel; 
public getCurrentLevel() { 
    return currentLevel; 
} 
public setCurrentLevel(int currentLevel) { 
    this.currentLevel = currentLevel; 
} 

大多數IDE都可以生成半自動的getter/setter。在Android Studio中,我只需按ALT+INS並選擇create gettercreate settercreate getter/setter,然後選擇要爲其創建的字段。因此,這不需要額外的時間,只要您決定要增加currentLevel並更改屏幕,只需更改setter即可。

public setCurrentLevel(int currentLevel) { 
    this.currentLevel = currentLevel; 
    ((Game)Gdx.app.getApplicationListener).setScreen(new LevelScreen(currentLvel)); 
} 

我也建議你正確地命名你的變量。 curLevel變成currentLevellc變成LevelChooser。這會節省你和你所要求的一切,幫助大家。如果你使用合適的IDE,它只花費你一秒,android studio甚至會提出這個命名,所以它實際上可以節省你在IDE中的時間。