-1
Мой актер в libgdx обычно рисует, как бы не работал inputlistener, я проверил, что я инициировал Gdx.input.setInputProcessor, и я уверен, что мои границы установлены правильно, поэтому, пожалуйста, помогите мне с этим вопросом.libgdx actor input не работает
Код:
Sprite playButton = new Sprite(new Texture(Gdx.files.internal("badlogic.jpg")));
public playBtn(){
setBounds(playButton.getX(),playButton.getY(),getWidth(),getHeight());
setTouchable(Touchable.enabled);
addListener(new InputListener(){
@Override
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
Gdx.app.log("Example", "touch started at (" + x + ", " + y + ")");
return false;
}
@Override
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
Gdx.app.log("Example", "touch done at (" + x + ", " + y + ")");
}
});
}
@Override
public void draw(Batch batch, float parentAlpha) {
playButton.draw(batch);
}
@Override
public void act(float delta) {
super.act(delta);
}
Основной класс:
public MenuState(GameStateManager gsm){
super(gsm);
ScreenViewport screenViewport = new ScreenViewport();
menuStage = new Stage(screenViewport);
playBtn playButton= new playBtn();
menuStage.addActor(playButton);
Gdx.input.setInputProcessor(menuStage);
background = new Sprite(new Texture("MenuBG.png"));
project = new Project();
background.setSize(project.WIDTH,project.HEIGHT);
}
@Override
protected void handleInput() {
}
@Override
public void update(float dt) {
handleInput();
}
@Override
public void render(SpriteBatch sb) {
sb.begin();
background.draw(sb);
sb.end();
menuStage.act(Gdx.graphics.getDeltaTime());
menuStage.draw();
}
"inputlistener не работает" не поможет, что много. Вы можете объяснить, каким образом он не работает. Делает ли он неправильные вещи? Разве это вообще не называется? Кроме того, вы можете немного очистить свой код, чтобы его было легче читать. – Thomas
@Thomas Да, конечно, я отредактирую его еще раз, и inputlistener не будет вызван – icedbluw