如何更改LibGdx的CheckBox图像的大小?

时间:2014-02-16 16:05:26

标签: java libgdx

我正在使用libgdx测试的皮肤:uiskin.json。

出于某种原因,复选框显示为f.e.在badlogic / gdx / tests / MipMapTest.java中 Checkbox的大小取决于什么?相机的分辨率?或者有没有办法手动设置它?

Helper.RESOLUTION_WIDTH = 800和

Helper.RESOLUTION_HEIGHT = 1280

@Override
public void show() {

    skin = new Skin(Gdx.files.internal("skins/uiskin.json"));
    cam = new OrthographicCamera(Helper.RESOLUTION_WIDTH, Helper.RESOLUTION_HEIGHT);
    cam.position.set(Helper.RESOLUTION_WIDTH / 2, Helper.RESOLUTION_HEIGHT / 2, 0); 
    stage = new Stage(Helper.RESOLUTION_WIDTH, Helper.RESOLUTION_HEIGHT, true);
    stage.setCamera(cam);

    CheckBox checkBox1 = new CheckBox("", skin);
    checkBox1.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            game.setScreen(new WinScreen2a(game));
        }
    });
    CheckBox checkBox2 = new CheckBox("", skin);
    checkBox2.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            game.setScreen(new WinScreen2b(game));
        }
    });

    Window window = new Window("Dialog", skin);
    window.debug();
    window.setPosition(Helper.RESOLUTION_WIDTH/2 - 375, 10);
    window.setSize(750, 350);

    table.add(checkBox1).left();
    table.getCells().get(0).size(200, 100);
    table.add(option1).width(500).height(100).pad(10f);
    table.row();

    table.add(checkBox2).left();
    table.getCells().get(2).size(200, 100);
    table.add(option2).width(500).height(100).pad(10f);
    table.row();

    window.add(table).top().left();
    stage.addActor(window);

2 个答案:

答案 0 :(得分:0)

这会更改复选框图像大小,但我注意到点击检测不准确。无法通过设置框的边界来改变它,但也许还有一些方法尚待发现。

CheckBox cb = new CheckBox(" Label text", xxx.getDefaultSkin());
// Changes the checkbox image size
cb.getImageCell().height(50);
cb.getImageCell().width(50);
// Change the text size accordingly
cb.getLabel().setFontScale(0.6f, 0.6f);

我虽然认为为此创建自定义组件可能更好=>创建一个扩展Actor 的类。该类包含带有标签的图像按钮。然后添加辅助方法以根据需要轻松修改组件。 通过这种方式,我成功地创建了看起来很整洁的复杂易于重复使用的组件。

答案 1 :(得分:0)

您需要设置图像缩放类型。默认为无。

CheckBox soundCB = new CheckBox("Sound", uiskin);
soundCB.getImage().setScaling(Scaling.fill);
soundCB.getImageCell().size(GameConfig.WIDTH/6);
soundCB.left().pad(PAD);
soundCB.getLabelCell().pad(PAD);
//...
content.add(soundCB).width(GameConfig.WIDTH/1.5f).row(); //add to table