我正在使用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);
答案 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