Итак, у вас есть класс, которому нужны "услуги" GestureListener - вы хотите получать информацию, когда происходит какое-либо событие жеста, и вы хотите иметь информацию о свойствах жеста.
Затем, как и вы, сделайте так, чтобы ваш класс реализовывал интерфейс GestureListener.
После этого ваша IDE (Eclipse или Android Studio или что-то еще) будет жаловаться, что вы не реализовали все методы GestureListener, но она также может сделать это за вас. Если вы (в eclipse) наведете курсор на ошибку в коде, IDE предложит вам создать отсутствующие методы.
Я бы сказал, что вы примерно на этом шаге. Но теперь ваши методы должны делать что-то полезное. Например, если вы хотите что-то сделать, когда игрок касается экрана, добавьте свой код в этот метод. Сделай что-нибудь там. Внутри методов GestureListener у вас есть некоторая информация, такая как параметры метода, такие как координаты x и y, кнопка (левая, средняя, правая) и что-то в этом роде.
Таким образом, когда вы вызываете этот setInputProcessor с объектом, созданным в вашем классе, который реализует интерфейс GL, libGDX будет знать, что нужно вызывать ваши методы, когда происходит какое-либо событие.
Каждый метод, сгенерированный IDE, имеет отметку «todo» — вместо этого вы должны поместить свой код. Код, который обработает это событие, переместит ваш космический корабль, выпустит пулю или что-то еще. Вам не нужно делать что-то для каждого события, а только для тех, которые вас интересуют. Вы можете оставить другие пустыми, но они должны быть в вашем классе.
Вот пример:
// importing interface
import com.badlogic.gdx.input.GestureDetector.GestureListener;
// defining my class that implements that interface
public class TouchController implements GestureListener{
// constructor - just storing objects passed to it.
public TouchController(Playground pg, Army army, Hud hud){
super();
this.pg = pg;
this.army = army;
this.hud = hud;
initialZoom = pg.zoom;
}
// Adding some action to touchDown method - I'm just calling my hud object's method and passing coords I get
@Override
public boolean touchDown(float x, float y, int pointer, int button) {
hud.pressedAt(x, pg.camera.viewportHeight-y); // opposite Y axis
// TODO Auto-generated method stub
return false;
}
// Similar thing. I unproject coords I get.
@Override
public boolean tap(float x, float y, int count, int button) {
if (!hud.buttonPressed){
Vector3 touchPos = new Vector3();
touchPos.set(x, y, 0);
pg.camera.unproject(touchPos);
army.add(touchPos.x, touchPos.y, SoldierSide.RED);
}else hud.released();
return false;
}
// Again similar stuff, but this pan methods is getting also delta value (difference from last reading x and y values) which can be useful
@Override
public boolean pan(float x, float y, float deltaX, float deltaY) {
if (hud.aimDrag) hud.aimDragged((int)deltaX, (int)deltaY);
else if (hud.sliderDrag) hud.sliderDragged((int)deltaX, (int)deltaY);
else if (!hud.buttonPressed) pg.panned((int)deltaX, (int)deltaY);
return false;
}
...
person
MilanG
schedule
29.01.2015