Пятница, 29 Марта 2024, 14:03

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Java » Однократное нажатие клавиши (Однократное нажатие клавиши)
Однократное нажатие клавиши
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 как слушателя. Подробней расписать не могу, сказывается отсутствие педагогического образования. Если всё равно есть вопросы будь добр погуглить, надеюсь знание английского имеется.

Удачи! smile


- 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
Форум игроделов » Программирование » Java » Однократное нажатие клавиши (Однократное нажатие клавиши)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг