Я попытался найти ответ, чтобы решить проблему, но я думаю, что, похоже, я не понимаю, как использовать длинную печать в Libgdx.Libgdx - Как использовать "Long Press"?
Я хочу, чтобы мой персонаж двигался вправо, когда я долго нажимаю на правую половину экрана и уходил, когда я долго нажимаю на левую половину экрана.
Я искал и попробовал.
Вот мой InputHandler класс:
public class InputHandler implements InputProcessor {
private MainCharacter myMainCharacter;
public InputHandler(MainCharacter mainCharacter) {
myMainCharacter = mainCharacter;
}
@Override
public boolean keyDown(int keycode) {
return false;
}
@Override
public boolean keyUp(int keycode) {
return false;
}
@Override
public boolean keyTyped(char character) {
return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
myMainCharacter.onClick();
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
return false;
}
@Override
public boolean scrolled(int amount) {
return false;
}
}
А вот мой MainCharacter класс:
public class MainCharacter {
private Vector2 position;
private Vector2 velocity;
private Vector2 acceleration;
private float rotation;
private int width;
private int height;
public MainCharacter(float x, float y, int width, int height) {
this.width = width;
this.height = height;
position = new Vector2(x, y);
velocity = new Vector2(0, 0);
acceleration = new Vector2(0, 460);
}
public void update(float delta) {
velocity.add(acceleration.cpy().scl(delta));
if (velocity.y > 200) {
velocity.y = 200;
}
position.add(velocity.cpy().scl(delta));
}
public void onClick() {
if (Gdx.input.getX() <= 135) {
Gdx.app.log("TAG", "LEFT");
position.x--;
} else if (Gdx.input.getX() >= 137) {
Gdx.app.log("TAG", "RIGHT");
position.x++;
}
}
public float getX() {
return position.x;
}
public float getY() {
return position.y;
}
public float getWidth() {
return width;
}
public float getHeight() {
return height;
}
public float getRotation() {
return rotation;
}
}
Я использовал onClick()
метод в качестве замены, пока я не найти решение проблемы , Он отлично работает, но не имеет такого же эффекта, как и длительная печать. Мой персонаж перемещается влево, когда я нажимаю на левую часть экрана, и сразу, когда я нажимаю на правую сторону экрана. Но, конечно, это не сработает, когда я долгое время нажимаю.
Так как я могу использовать «Длинное нажатие»?
Я был бы очень признателен за вашу помощь.
Так что это должно быть снаружи longPressed? –
Он должен перейти в цикл обновления. Longpress вызывается только один раз после удержания в течение некоторого времени. – Madmenyo
СПАСИБО !!! ЭТО СРАБОТАЛО!!! –