Ich habe versucht, eine Antwort zu finden, um das Problem zu lösen, aber ich denke, dass ich nicht zu verstehen, wie man die lange drücken Sie in Libgdx verwenden.Libgdx - Wie benutzt man "Long Press"?
Ich möchte meinen Charakter nach rechts bewegen, wenn ich lange auf die rechte Hälfte des Bildschirms drücke und links, wenn ich lange auf die linke Hälfte des Bildschirms drücke.
Ich habe gesucht und versucht.
Hier ist meine InputHandler Klasse:
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;
}
}
Und hier ist meine MainCharacter Klasse:
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;
}
}
I verwendet onClick()
Verfahren als Ersatz, bis ich eine Lösung für das Problem zu finden . Es funktioniert gut, aber es hat nicht die gleiche Wirkung wie die lange drücken. Mein Charakter bewegt sich nach links, wenn ich auf die linke Seite des Bildschirms klicke und nach rechts, wenn ich auf die rechte Seite des Bildschirms klicke. Aber natürlich funktioniert es nicht, wenn ich lange drücke.
Also wie kann ich 'Long Press' verwenden?
Ich würde Ihre Hilfe wirklich schätzen.
Also sollte dies außerhalb longPressed sein? –
Es sollte in die Update-Schleife gehen. Longpress wird nur einmal nach längerem Halten gerufen. – Madmenyo
DANKE !!! ES FUNKTIONIERTE!!! –