在libgdx按钮上没有检测到触摸

时间:2013-05-03 07:19:49

标签: java button touch libgdx actor

我是libgdx的新手并且正在学习libgdx scene2d。

在菜单屏幕构造器中,我创建了一个具有设备分辨率的舞台 并为输入处理器添加了阶段:

stage = new Stage(800, 480, false);
stage.getCamera().position.set(400, 240, 0);
Gdx.input.setInputProcessor(stage);

现在,我创建了一个按钮并将其添加到舞台:

PButton start = new PButton(Assets.btn, Assets.btn_p, Assets.font50,
            "START");
start.setPosition(600, 400);
start.addListener(new ActorGestureListener() {
    @Override
    public void touchUp(InputEvent event, float x, float y,
                int pointer, int button) {
        super.touchUp(event, x, y, pointer, button);
        getGame().setScreen(new GameScreen1(getGame()));
        System.out.println("set game");
        }
    });
    stage.addActor(start);

其中PButtonButton类扩展为:

public class PButton extends Button {
    private BitmapFont font;
    private String text;
    private float sizex;
    private float sizey;
    private float posx;
    private float posy;

    public PButton(TextureRegion up, TextureRegion down, BitmapFont font,
        String text) {
        super(new TextureRegionDrawable(up), new TextureRegionDrawable(down));
        this.font = font;
        this.text = text;
        this.sizex = up.getRegionWidth();
        this.sizey = down.getRegionHeight();
        setSize(sizex, sizey);
        font.setScale(Initiate.getM_ratio());
    }

    @Override
    public void draw(SpriteBatch batch, float parentAlpha) {
            super.draw(batch, parentAlpha);
            font.draw(batch, text, posx + sizex / 2 - font.getBounds(text).width
            / 2, posy + sizey / 2 + font.getBounds(text).height / 2);

    }

    @Override
    public void setPosition(float x, float y) {
            this.posx = x;
            this.posy = y;
            super.setPosition(posx, posy);
    }
}

但是当我点击按钮时,它没有输入。

更新:深度调试后问题解决我发现如果没有正确调用我的stage.dispose()方法 无论如何,谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

实际上你不会对按钮上的Gesture采取行动。这是点击或触摸,但不是手势。将其更改为ClickListener和onClick操作,它应该可以正常工作。 此致