我正在制作一个触摸按钮,但是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);
答案 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 getter
,create setter
或create getter/setter
,然后选择我要为其创建的字段。因此,这不需要额外的时间,每当您决定增加currentLevel并更改屏幕时,您只需更改设置器即可。
public setCurrentLevel(int currentLevel) {
this.currentLevel = currentLevel;
((Game)Gdx.app.getApplicationListener).setScreen(new LevelScreen(currentLvel));
}
我还建议您正确命名变量。 curLevel
变为currentLevel
,lc
变为LevelChooser
。这将节省您和您要求的所有帮助。如果您使用适当的IDE,它只需花费您一秒钟,android studio甚至建议这样命名,这样它实际上可以节省您在IDE中的时间。