gpt4 book ai didi

java - LIBGDX 在一个屏幕上制作 5 个不同的按钮

转载 作者:行者123 更新时间:2023-12-01 04:40:37 25 4
gpt4 key购买 nike

我有 5 个按钮,我需要做不同的事情,但它们没有,我需要知道如何让它们做。

这是我的代码;

public class MainMenu implements Screen {

CrazyZombies game;
Stage stage;
TextureAtlas atlas;
Skin skin;
SpriteBatch batch;
Button play, option, quit, custom, store, menu;

public MainMenu(CrazyZombies game) {
this.game = game;
}

public void create () {
stage = new Stage();
}

@Override
public void render(float delta) {
Gdx.gl.glClearColor(0.09f, 0.28f, 0.2f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

stage.act(delta);
stage.draw();

batch.begin();
batch.end();
}

@Override
public void resize(int width, int height) {
if (stage == null)
stage = new Stage(width, height, true);
stage.clear();

stage.setViewport(854, 480, true);
stage.getCamera().translate(-stage.getGutterWidth(), -stage.getGutterHeight(), 0);

Gdx.input.setInputProcessor(stage);

/**
* quit Button
*/

TextButtonStyle styleQuit = new TextButtonStyle();
styleQuit.up = skin.getDrawable("8layer");
styleQuit.down = skin.getDrawable("8layer");

quit = new Button(styleQuit);

quit.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
return true;
}

public void touchUp(InputEvent event, float x, float y,
int pointer, int button) {

}
});

/**
* End quit Button
*/

/**
* store Button
*/

TextButtonStyle styleStore = new TextButtonStyle();
styleStore.up = skin.getDrawable("9layer");
styleStore.down = skin.getDrawable("9layer");

store = new Button(styleStore);

store.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
return true;
}

public void touchUp(InputEvent event, float x, float y,
int pointer, int button) {
game.setScreen(new StoreScreen(game));
}
});

/**
* End store Button
*/

/**
* customs Button
*/

TextButtonStyle styleCustom = new TextButtonStyle();
styleCustom.up = skin.getDrawable("10layer");
styleCustom.down = skin.getDrawable("10layer");

custom = new Button(styleCustom);

custom.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
return true;
}

public void touchUp(InputEvent event, float x, float y,
int pointer, int button) {
game.setScreen(new CustomScreen(game));
}
});

/**
* End customs Button
*/

/**
* Options Button
*/

TextButtonStyle styleOptions = new TextButtonStyle();
styleOptions.up = skin.getDrawable("11layer");
styleOptions.down = skin.getDrawable("11layer");

option = new Button(styleOptions);

option.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
return true;
}

public void touchUp(InputEvent event, float x, float y,
int pointer, int button) {
game.setScreen(new OptionScreen(game));
}
});

/**
* End Options Button
*/

/**
* Play Button
*/

TextButtonStyle stylePlay = new TextButtonStyle();
stylePlay.up = skin.getDrawable("7layer");
stylePlay.down = skin.getDrawable("7layer");

play = new Button(stylePlay);

play.addListener(new InputListener() {
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
return true;
}

public void touchUp(InputEvent event, float x, float y,
int pointer, int button) {
Gdx.app.log(CrazyZombies.LOG, "un-touched");
game.setScreen(new GameScreen(game));
}
});

/**
* End Play Button
*/

/**
* start Background
*/

TextButtonStyle styleMenu = new TextButtonStyle();
styleMenu.up = skin.getDrawable("background");

menu = new Button(styleMenu);

/**
* End Background
*/

stage.addActor(menu);
stage.addActor(play);
stage.addActor(option);
stage.addActor(store);
stage.addActor(custom);
stage.addActor(quit);

}

@Override
public void show() {
Audio.playMusic(true);
batch = new SpriteBatch();
atlas = new TextureAtlas("data/mainmenu/mainmenu.pack");
skin = new Skin();
skin.addRegions(atlas);
}

@Override
public void hide() {
dispose();
}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void dispose() {
batch.dispose();
skin.dispose();
atlas.dispose();
stage.dispose();
Audio.dispose();
}

public void playButton(Button play) {

}
}

因此,我的 5 个按钮已设置完毕,并且有操作和监听器,但现在它们不执行任何操作,当我单选一个按钮来测试它的工作原理时,但可以从屏幕上的任何位置单击该按钮,所以我认为它是按钮区域有问题,但我不知道如何设置。

我已经尝试过 .getheight()、.getWidth 等,但它仍然是一样的。尽管在我的纹理图集中,所有图像的高度和宽度都相同,因为它们都构成一张图像,这可能是我的问题吗?

最佳答案

对于您的第一个问题,即您的按钮没有执行任何操作,我认为这是因为该事件被传播到您的所有按钮,可能按照它们添加到的顺序阶段。问题是您的 touchDown() 方法返回 true。这意味着传播应该停止,然后其他参与者的 touchDown() 方法不会被调用。你感觉它什么也没做,但实际上它做了一些事情,只是你的 touchDown() 方法是空的。

对于您的第二个问题,可能是因为您没有设置 Actor 的尺寸。

关于java - LIBGDX 在一个屏幕上制作 5 个不同的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16635191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com