重置按钮LibGdx

时间:2014-08-29 18:14:28

标签: java android libgdx actionlistener restart

我正在进行一场乒乓球比赛,我想要做的是当球越过球员的球,让球回到中间(我已经完成)和一个按钮,当我们按下它时球的速度会回到原来的状态(比赛重新开始)。  我已经拥有的是当玩家得分时游戏重置。我添加了按钮和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工作。

1 个答案:

答案 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