2013-07-14 2 views
6

Я пытаюсь получить, когда мышь просто щелкнула, а не когда нажата мышь. Я имею в виду, что я использую код в цикле, и если я обнаруживаю, что мышь нажата, код будет выполнять много времени, но я хочу выполнить код только один раз, когда мышь только что нажала.Мышь Libgdx просто щелкнула

Это мой код:

if (Gdx.input.isButtonPressed(Input.Buttons.LEFT)){ 

      //Some stuff 
} 

ответ

9

См http://code.google.com/p/libgdx/wiki/InputEvent - вам нужно обрабатывать событие ввода вместо опроса, путем расширения InputProcessor и передавая свой собственный процессор ввода в Gdx.input.setInputProcessor().

EDIT:

public class MyInputProcessor implements InputProcessor { 
    @Override 
    public boolean touchDown (int x, int y, int pointer, int button) { 
     if (button == Input.Buttons.LEFT) { 
      // Some stuff 
      return true;  
     } 
     return false; 
    } 
} 

И везде, где вы хотите использовать, что:

MyInputProcessor inputProcessor = new MyInputProcessor(); 
Gdx.input.setInputProcessor(inputProcessor); 

Если найти его проще использовать этот шаблон:

class AwesomeGameClass { 
    public void init() { 
     Gdx.input.setInputProcessor(new InputProcessor() { 
      @Override 
      public boolean TouchDown(int x, int y, int pointer, int button) { 
       if (button == Input.Buttons.LEFT) { 
        onMouseDown(); 
        return true; 
       } 
       return false 
      } 

      ... the other implementations for InputProcessor go here, if you're using Eclipse or Intellij they'll add them in automatically ... 
     }); 
    } 

    private void onMouseDown() { 
    } 
} 
+0

Можете ли вы дать мне более подробно о том, какие функции я должен использовать? в InputEvent, я не вижу, где функция, которая мне нужна. – LeSam

+0

Мне нужно проверить, когда мышь просто щелкнула, что означает, что даже если мышь нажата в течение длительного времени, код будет исполнять только ОДИН РАЗ, когда мышь только что нажала – LeSam

+0

Да, InputProcessor сделает это за вас. Редактирование ответа для более подробной информации. –

11

Вы можете использовать Gdx.input.justTouched(), который истинно в первом кадре, где нажата мышь. Или, как в других государствах ответа, вы можете использовать InputProcessor (или InputAdapter) и обрабатывать touchDown событие:

Gdx.input.setInputProcessor(new InputAdapter() { 
    public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
     if (button == Buttons.LEFT) { 
      // do something 
     } 
    } 
}); 
Смежные вопросы