Мой метод отрисовки:Как отключить кнопку при переключении экранов? (Android LibGDX)
public void render(float delta) {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
int w = GateRunner.WIDTH;
int h = GateRunner.HEIGHT;
cam.update();
cam.setToOrtho(false, w, h);
Gdx.input.setInputProcessor(this);
game.batch.begin();
game.batch.draw(title_background, 0, 0, GateRunner.WIDTH, GateRunner.HEIGHT);
game.batch.draw(title, (w/2) - (w/2), h/2 + h * 12/90, w, (int) (w * 0.5));
playButtonSprite.setPosition((w/2) - (w/2), h/2 + h/20);
playButtonSprite.setSize(w, (int) (w * (144.0/1080)));
playButtonSprite.draw(game.batch);
game.batch.draw(instructions_button, (w/2) - (w/2), h/2 + h/20 - h*3/40, w, (int) (w * (144.0/1080)));
game.batch.draw(about_button, (w/2) - (w/2), h/2 + h/20 - 2*h*3/40, w, (int)(w*(144.0/1080)));
game.batch.end();
}
Мой метод приземление.
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
float pointerX = InputTransform.getCursorToModelX(windowWidth, screenX);
float pointerY = InputTransform.getCursorToModelY(windowHeight, screenY);
if(playButtonSprite.getBoundingRectangle().contains(pointerX, pointerY)) //Play button
{
game.setScreen(new PlayScreen(game));
dispose();
}
return true;
}
Я хотел сделать так, когда я нажал на кнопку «Play», которая просто Sprite, он будет двигаться в экране воспроизведения. Я сделал это, проверив, был ли прямоугольник, на котором был нажат элемент справки Play. Однако, хотя эта часть работает, всякий раз, когда я нажимаю в этой области прямоугольника в PlayScreen, она снова запускает код - он запускает PlayScreen. Как я могу это исправить?
Редактировать: также может быть лучшее имя для этого вопроса, поэтому не стесняйтесь предлагать.
Переключается ли он на другой экран с той, на которой установлена кнопка? – tobloef
Кажется, ваш touchDown всегда проверяет, просто ли вы коснулись границы playButtonSprite. Вы хотите настроить булевский флаг и проверить его в своем условии if. Кроме того, я бы посоветовал переосмыслить ваш дизайн, потому что вы получили тот же InputProcessor на обоих экранах, видимо (отсюда проблема). – MikeMatusiak
@MikeMatusiak На самом деле я не принимаю входные данные на моем втором экране (на самом деле его немного нет). Как мне переделать мой счёт? – 4everPixelated