java - ImageButtons 按下后不会更改图像 - LibGDX

标签 java android user-interface libgdx

我目前正在 libgdx 中的菜单屏幕上工作。我添加了一个ImageButton 到屏幕上,但是当我想启动应用程序并单击按钮时,图像不会将状态从按钮向上图像更改为按钮向下图像。此外,添加监听器(向按钮添加操作)不会产生任何效果。我猜这与 addActor() 函数无法正常工作有关?

public class Test extends UIScreen {
 public Test(final MainExecute test) {
        super();
        this.test = test;
    }

    @Override
    public void show() {
        stage = new Stage();
        batch = new SpriteBatch();
        table = new Table();
        txture = new createTexture();
        atlas = new TextureAtlas("atlases/main/unnamed.atlas");

        table.left();
        table.top();
        table.setFillParent(true);
        table.setDebug(true);
        background = new Texture(Gdx.files.internal("ui elements and skins/Settings screen/Background.png"));
        Texture up = new Texture(Gdx.files.internal("ui elements and skins/Settings screen/Settings.png"));
        Drawable upDraw = new TextureRegionDrawable(new TextureRegion(up));
        Texture down = new Texture(Gdx.files.internal("ui elements and skins/Settings screen/Settings Pressed.png"));
        Drawable downDraw = new TextureRegionDrawable(new TextureRegion(down));


        ImageButton settings = new ImageButton(upDraw, downDraw);
        table.add(settings).pad(30).expand();
        this.stage.addActor(table);

        settings.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeEvent event, Actor actor) {
                Gdx.app.exit();
            }
        });

    }

    @Override
    public void render(float delta) {
        batch.begin();
        batch.draw(background, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        batch.end();
        this.stage.act(delta);
        this.stage.draw();
    }

    @Override
    public void resize(int width, int height) {
        this.viewport.update(width, height);
        this.camera.position.set(this.camera.viewportWidth / 2, this.camera.viewportHeight / 2, 0);
        this.camera.update();
    }

    @Override
    public void hide() {
    }

    @Override
    public void pause() {
    }

    @Override
    public void resume() {
    }

    @Override
    public void dispose() {
    }
}

UIScreen

   public UIScreen() {
        //Initialising camera and adding viewport
        camera = new OrthographicCamera();
        viewport = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), camera);
        viewport.apply();
        //Camera position, watching for full screen
        camera.position.set(camera.viewportWidth / 2, camera.viewportHeight / 2, 0);
        camera.update();
        //Adding the viewport to the stage
        stage = new Stage(new ScreenViewport(new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight())));
        stage.setDebugAll(true);
        Gdx.input.setInputProcessor(stage);

    }

最佳答案

首先,您将在 show() 中创建一个新的 Stage 实例,覆盖您在 UIScreen 中创建的实例。因此,阶段未设置为InputProcessor。

只需删除 show 方法中的第一行 stage = new Stage(); 即可正常工作。

编辑:您还必须使用 super.stage 而不是 this.stage 访问阶段,并确保它对测试可见。

关于java - ImageButtons 按下后不会更改图像 - LibGDX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54152067/

相关文章:

java - GUI 没有出现在 IntelliJ IDEA 中

java - 如何才能使我的操作监听器类使用相同的 int count 变量?

android - 签署App Bundle基础模块和动态功能模块

android - 构建android apk时如何将参数传递给aapt?

java - 在 libGDX 中将四元数应用于相机

java - 指定ChromeDriver运行的端口

java - Android 通知设置ContentView

wpf - 选择 UI 库来创建令人惊叹的 Windows 桌面应用程序

java - 将多个索引项转换为流的最简单方法

java - 使用 Commons-Imaging 创建多页 TIFF