В общем, проблема заключается в следующем: при добавлении кнопок на Table возникает сдвиг их области нажатия. На рисунке 1. показано общий вид UI, на 2 - примерные места реагирования.
Если добавить кнопку непосредственно на stage - все работает нормально.
public class SettingsState extends State {
private Stage uiStage;
private Table table;
//1
private Button musicButton;
private Slider musicSlider;
//2
private Button soundButton;
private Slider soundSlider;
//3
private TextField defaultName;
private TextButton okButton;
//4
private CheckBox mouseControl;
//5
private Label up;
private TextField upText;
//6
private Label down;
private TextField downText;
//7
private Label left;
private TextField leftText;
//8
private Label right;
private TextField rightText;
//9
private Label special;
private TextField specialText;
public SettingsState(GameStateManager gsm) {
super(gsm);
uiStage = new Stage();
BackgroundActor bgActor = new BackgroundActor(2);
bgActor.setSize(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
uiStage.addActor(bgActor);
musicButton = new Button(ResourceLoader.getInstance().UI_SKIN,"music");
musicSlider = new Slider(0,10,1,false,ResourceLoader.getInstance().UI_SKIN);
musicSlider.setValue(8);
soundButton = new Button(ResourceLoader.getInstance().UI_SKIN,"sound");
soundSlider = new Slider(0,10,1,false,ResourceLoader.getInstance().UI_SKIN);
defaultName = new TextField("",ResourceLoader.getInstance().UI_SKIN);
defaultName.setMessageText("Write your default name");
okButton = new TextButton("Ok",ResourceLoader.getInstance().UI_SKIN,"default");
mouseControl = new CheckBox(" Mouse control",ResourceLoader.getInstance().UI_SKIN,"switch");
up = new Label("Up",ResourceLoader.getInstance().UI_SKIN,"subtitle");
down = new Label("Down",ResourceLoader.getInstance().UI_SKIN,"subtitle");
left = new Label("Left",ResourceLoader.getInstance().UI_SKIN,"subtitle");
right = new Label("Right",ResourceLoader.getInstance().UI_SKIN,"subtitle");
special = new Label("Special",ResourceLoader.getInstance().UI_SKIN,"subtitle");
up.setAlignment(Align.center);
down.setAlignment(Align.center);
left.setAlignment(Align.center);
right.setAlignment(Align.center);
special.setAlignment(Align.center);
upText = new TextField("W",ResourceLoader.getInstance().UI_SKIN);
downText = new TextField("S",ResourceLoader.getInstance().UI_SKIN);
leftText = new TextField("A",ResourceLoader.getInstance().UI_SKIN);
rightText = new TextField("D",ResourceLoader.getInstance().UI_SKIN);
specialText = new TextField("SPACE",ResourceLoader.getInstance().UI_SKIN);
upText.setAlignment(Align.center);
downText.setAlignment(Align.center);
leftText.setAlignment(Align.center);
rightText.setAlignment(Align.center);
specialText.setAlignment(Align.center);
table = new Table(/*ResourceLoader.getInstance().UI_SKIN*/);
table.setSize(Gdx.graphics.getHeight()/2, Gdx.graphics.getHeight()/2);
table.setPosition(Gdx.graphics.getWidth()/2-table.getWidth()/2,
Gdx.graphics.getHeight()/2-table.getHeight()/2);
int pad = 5;
int elements = 9;
float height = ((table.getHeight()-50)/elements)-pad*2;
int firstCollumnWidth = (int) (table.getWidth()/8*3);
int secondCollumnWidth = (int) (table.getWidth()/8*4);
table.defaults().expand();
table.add(musicButton);
table.add(musicSlider).width(secondCollumnWidth);
table.row();
table.add(soundButton);
table.add(soundSlider).width(secondCollumnWidth);
table.row();
table.add(mouseControl).pad(pad).center().colspan(2).height(height);
table.row();
table.add(okButton).pad(pad).width(firstCollumnWidth).height(height);
table.add(defaultName).pad(pad).width(secondCollumnWidth).height(height);
table.row();
table.add(up).pad(pad).width(firstCollumnWidth).height(height);
table.add(upText).pad(pad).width(secondCollumnWidth).height(height);
table.row();
table.add(down).pad(pad).width(firstCollumnWidth).height(height);
table.add(downText).pad(pad).width(secondCollumnWidth).height(height);
table.row();
table.add(left).pad(pad).width(firstCollumnWidth).height(height);
table.add(leftText).pad(pad).width(secondCollumnWidth).height(height);
table.row();
table.add(right).pad(pad).width(firstCollumnWidth).height(height);
table.add(rightText).pad(pad).width(secondCollumnWidth).height(height);
table.row();
table.add(special).pad(pad).width(firstCollumnWidth).height(height);
table.add(specialText).pad(pad).width(secondCollumnWidth).height(height);
uiStage.addActor(table);
/*window.add(table);
uiStage.addActor(window);*/
Gdx.input.setInputProcessor(uiStage);
}
@Override
protected void handleInput() {
musicSlider.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
//preference.setVolumen(volumenSlider.getValue());
}
});
soundSlider.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
//preference.setSound(volumenSlider.getValue());
}
});
okButton.addListener(new ClickListener(){
@Override
public void clicked(InputEvent e, float x, float y){
}
});
}
@Override
public void update(float dt) {
uiStage.act(Gdx.graphics.getDeltaTime());
}
@Override
public void render(SpriteBatch sb) {
uiStage.draw();
}
@Override
public void dispose() {
}
@Override
public void doWhenClose() {
}}
Как исправить, чтобы все кликалось на своих местах?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
есть вот такой код, мне надо сделать общий запрос sql в базу данных, чтобы он работал в моих разных методах
Как запустить проект (программу) в Eclipse? Есть проект джава, я его через SVN сохранил на компьютер для последующего дебагаНо у меня не выходит...