Однократное нажатие клавиши
|
|
Edison6 | Дата: Пятница, 18 Января 2013, 18:58 | Сообщение # 1 |
TRUE Programmer
Сейчас нет на сайте
| Как в libGDX сделать однократное нажатие клавиши в Slick2D там был метод а тут как?
Берил сбрей усы
|
|
| |
jackbv | Дата: Пятница, 18 Января 2013, 19:33 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| пишем в инициализации: Код Gdx.input.setInputProcessor(new Control());
Создаём класс Control, наследника InputProcessor: Код
public class Control implements InputProcessor {
@Override public boolean keyDown(int keycode) {
// Тут обрабатывается нажатие клавиши
return true; }
@Override public boolean keyUp(int keycode) {
// Тут обрабатывается поднятие клавиши
return true; }
@Override public boolean keyTyped(char character) {...}
@Override public boolean touchDown(int screenX, int screenY, int pointer, int button) {...}
@Override public boolean touchUp(int screenX, int screenY, int pointer, int button) {...}
@Override public boolean touchDragged(int screenX, int screenY, int pointer) {...}
@Override public boolean mouseMoved(int screenX, int screenY) {...}
@Override public boolean scrolled(int amount) {...} }
Вот другое решение: Код
boolean isDown; boolean executed;
public void render(float delta) {
if (Gdx.input.isKeyPressed(Input.Keys.[ЛЮБАЯ КЛАВИША])) { isDown = true; } else { isDown = false; executed = false; }
if (isDown && !executed) { // Обрабатываем нажатие клавиши
executed = true; }
}
Вот и всё магия!
Советую всегда создавать класс Control(или называй как хочешь), там всё удобней.
- Java - PHP, JavaScript - HTML/CSS DeadlySquare Run or Die Super SQUARE
Сообщение отредактировал jackbv - Пятница, 18 Января 2013, 19:46 |
|
| |
Edison6 | Дата: Пятница, 18 Января 2013, 20:18 | Сообщение # 3 |
TRUE Programmer
Сейчас нет на сайте
| Я не совсем понял как сделать однократное нажатие с помощью класса Control
Берил сбрей усы
|
|
| |
jackbv | Дата: Пятница, 18 Января 2013, 22:57 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| класс Control должен выполнять интерфейс InputProcessor. Он должен содержать все функции указанные в интерфейсе. За что отвечает каждая функция понятно из названия (touch - это нажатие экрана пальцем - для тачскрина или мышки - для Desktop). В прошлом сообщений есть пример рабочего класса, который я сам использую и пример регистрации класса Control как слушателя. Подробней расписать не могу, сказывается отсутствие педагогического образования. Если всё равно есть вопросы будь добр погуглить, надеюсь знание английского имеется.
Удачи!
- Java - PHP, JavaScript - HTML/CSS DeadlySquare Run or Die Super SQUARE
|
|
| |
Edison6 | Дата: Суббота, 19 Января 2013, 16:58 | Сообщение # 5 |
TRUE Programmer
Сейчас нет на сайте
| А редактор частиц кто нибудь знает как запустить из gdx-tools? Добавлено (19.01.2013, 16:58) --------------------------------------------- Пытался сделать единый класс для управления Код package Utils; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.InputProcessor; import com.total_gdx.MyGame;
public class Controls implements InputProcessor { public boolean key[] = new boolean[255]; public boolean keyPressed(int keycode) { return Gdx.input.isKeyPressed(keycode); } public boolean keyHit(int keyCode) { return key[keyCode]; } @Override public boolean keyDown(int keycode) { key[keycode] = true; return false; }
@Override public boolean keyUp(int keycode) { key[keycode] = false; return false; }
@Override public boolean keyTyped(char character) {
return false; }
@Override public boolean touchDown(int screenX, int screenY, int pointer, int button) {
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; }
} как то не удалось
Берил сбрей усы
|
|
| |
jackbv | Дата: Суббота, 19 Января 2013, 19:36 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Ты зарегистрировал слушателя?
Этот код должен работать: Код
public class Control implements InputProcessor {
public boolean key[] = new boolean[255];
@Override public boolean keyDown(int keycode) {
key[keycode] = true;
return true; }
@Override public boolean keyUp(int keycode) {
key[keycode] = false;
return true; }
@Override public boolean keyTyped(char character) {...}
@Override public boolean touchDown(int screenX, int screenY, int pointer, int button) {...}
@Override public boolean touchUp(int screenX, int screenY, int pointer, int button) {...}
@Override public boolean touchDragged(int screenX, int screenY, int pointer) {...}
@Override public boolean mouseMoved(int screenX, int screenY) {...}
@Override public boolean scrolled(int amount) {...} }
- Java - PHP, JavaScript - HTML/CSS DeadlySquare Run or Die Super SQUARE
|
|
| |