| Однократное нажатие клавиши | 
|  | 
| 
| 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
 |  |  |  |  |