我正在进行一场乒乓球比赛,我想要做的是当球越过球员的球,让球回到中间(我已经完成)和一个按钮,当我们按下它时球的速度会回到原来的状态(比赛重新开始)。 我已经拥有的是当玩家得分时游戏重置。我添加了按钮和actionlistener,但actionlistener没有重启游戏。这是我的代码:
public void StartAgain(){
if(resetButton = true){
int playButtonWidth = ballPong.getBallSizeX();
int playButtonHeight = ballPong.getBallSizeY();
ResetButtonStage = new Stage();
skin = new Skin();
font = new BitmapFont(Gdx.files.internal("font.fnt"), false);
style = new LabelStyle(font, Color.WHITE);
buttonAtlas = new TextureAtlas("buttons/playButton.pack");
skin.addRegions(buttonAtlas);
playButtonStyle = new TextButtonStyle();
playButtonStyle.up = skin.getDrawable("play");
playButtonStyle.over = skin.getDrawable("play_pressed");
playButtonStyle.down = skin.getDrawable("play_pressed");
playButtonStyle.font = font;
//------------------------------------------------------------------------------- Play button
playButton = new TextButton("", playButtonStyle);
//buttonStyle.font.setScale((float) 0.5);
playButton.setWidth(playButtonWidth);
playButton.setHeight(playButtonHeight);
playButton.setPosition(100,250);
ResetButtonStage.addActor(playButton);
playButton.addListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
ballPong.ballVectorX = ballPong.getBallSpeed();
ballPong.ballVectorY = ballPong.getBallSpeed();
resetButton = false;
return true;
}
});
Gdx.input.setInputProcessor(ResetButtonStage);
batch = new SpriteBatch();
ResetButtonStage.act();
ResetButtonStage.draw();
}
}
我试图做的是创建一个名为resetButton的布尔值并将其设置为false,当玩家得分时,将布尔值设置为true,从而显示按钮。然而,我已经走错了路。我已经完成了,所以当球的位置低于球拍时,游戏重置并且StartAgain()方法显示。但显然球的位置现在在桨上方(因为它已经重置)所以startAgain方法不会运行。
if(ballPong.getPosition().y<= 1){
player2Score = player2Score +1;
System.out.println("bottom");
StartAgain();
resetButton = true;
if(ballPong.reset ==true){
ballPong.reset();
}
}
我要问的是,我应该在哪里调用这个StartAgain()方法,以及如何让actionlistener工作。
答案 0 :(得分:0)
startAgain
方法的主体仅在resetButton = true
时执行,但是当您在调用{{1}之前检查ballPong.getPosition().y<= 1
是否resetButton = true
时}}
首先设置StartAgain()
,这样当您致电resetButton = true
时,它可以通过StartAgain()
检查。
很难猜出此代码在libGdx项目中的位置。它在屏幕的if (resetButton = true)
中吗?请显示您放置render()
声明的代码。
猜测它的位置,您可以调整if(ballPong.getPosition().y<= 1)
语句以考虑if
布尔值的当前状态。
resetButton