Как InputProecssor различает входы автоматически? - PullRequest
0 голосов
/ 02 июня 2019

Итак, у меня есть несколько вопросов по поводу некоторого кода. Здесь InputProcessor используется для обработки inputprocessor, но теперь он определяет, какой тип ввода. Очевидно, это работает с щелчком мыши, потому что это код, который рисует кнопки. Но как процессор ввода узнает, какой тип ввода поступит?

Второй вопрос касается кода кнопки. Таким образом, кнопка shich реализована, там есть addlistener новый Changelistener, который принимает событие и актера. Событие будет щелчком мыши, не так ли? Но что такое актер = это кнопка, на которую нажимают, или это что-то еще?

Я пытался поэкспериментировать с кодом и читать документацию по libgdx и scene2d, но это не принесло мне много объяснений по вопросам

Stage HandleStage = new Stage();
Gdx.input.setInputProcessor(HandleStage);
--------------------------------------------------------
 Button is implemented
TextButton start= new TextButton("starts game", skin);
        start.addListener(new ChangeListener() {
            @Override public void changed(ChangeEvent event, Actor actor) {
                start();
            }
        });

1 Ответ

0 голосов
/ 03 июня 2019

Gdx.input.setInputProcessor принимает экземпляр InputProcessor в качестве аргумента вашего HandleStage, который является стадией, реализующей этот интерфейс. InputProcessor имеет следующие методы:

public boolean keyDown(int keycode);
public boolean keyUp(int keycode);
public boolean keyTyped(char character);
public boolean touchDown(int screenX, int screenY, int pointer, int button);
public boolean touchUp(int screenX, int screenY, int pointer, int button);
public boolean touchDragged(int screenX, int screenY, int pointer);
public boolean mouseMoved(int screenX, int screenY);
public boolean scrolled(int amount);

Этап реализует это и обрабатывает, например, событие touchDown при нажатии кнопки.

Я не совсем понимаю ваш второй вопрос, так что я знаю, что из event в change () вы можете получить цель и настроить ее на обработку. Посмотрите в классе Event для получения дополнительной информации. Я думаю, что актер - Баттон, но просто попробуйте, написав: System.out.println(actor == start);

...