无法解析符号

时间:2016-02-14 20:34:23

标签: libgdx

我正在制作一个触摸按钮,但是libGDX无法识别'LevelChooser''Kombat''introscreen''wait''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 个答案:

答案 0 :(得分:0)

这只意味着您的班级无法访问这些字段/变量。这可能是因为有几件事。

  • 你弄错了
  • 字段/变量不存在。
  • 您将该字段设为私有/受保护并尝试从外部访问
  • 您没有指定可见性(私有/公共),这意味着它只对同一个包中的类可见。

我建议您公开LevelChooser curLevel,看看它是否有权访问。

如果你想对你进行正确的编程,那么如果要更改它,请再次将此变量设为私有,并且可以访问getter和/或setter。

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

大多数IDE都能够自动生成getters / setter。在Android Studio中,我只需按ALT+INS并选择create gettercreate settercreate getter/setter,然后选择我要为其创建的字段。因此,这不需要额外的时间,每当您决定增加currentLevel并更改屏幕时,您只需更改设置器即可。

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

我还建议您正确命名变量。 curLevel变为currentLevellc变为LevelChooser。这将节省您和您要求的所有帮助。如果您使用适当的IDE,它只需花费您一秒钟,android studio甚至建议这样命名,这样它实际上可以节省您在IDE中的时间。