2013-07-14 38 views
6

Sadece fare tıklandığında değil, fare tıklandığında almaya çalışıyorum. Yani bir döngüde bir kod kullanıyorum ve farenin basıldığını algılarsam, kod çok fazla zaman harcayacaktır, ancak kodu yalnızca bir kez tıklattıktan sonra fareyi tıkladığında. - Eğer() InputProcessor uzanan ve Gdx.input.setInputProcessor için özel giriş işlemcisi geçirerek yerine yoklama giriş olaylarını işlemek gerekirLibgdx Fare tıklandığında

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

      //Some stuff 
} 

cevap

9

http://code.google.com/p/libgdx/wiki/InputEvent bakınız:

Bu benim kodudur.

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; 
    } 
} 

Ve bunu kullanmak istediğiniz her yerde: DÜZENLEME

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

ise daha kolay bu kalıbı kullanmak bulmak:

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

Bana kullanmalıyım hangi işlevi hakkında daha fazla ayrıntı verebilir misiniz? InputEvent içinde, ihtiyacım olan işlevin nerede olduğunu göremiyorum. – LeSam

+0

Sadece fare tıklandığında kontrol etmem gerekiyor, yani fareye uzun bir süre basılmasa bile, kod sadece bir kez tıklandığında, fare sadece – LeSam

+0

Evet'i tıkladığında, InputProcessor bunu sizin için yapacak. Yakında daha fazla ayrıntı sağlamak için cevabı düzenlemek. –

11

Sen Gdx.input.justTouched() kullanabilirsiniz, hangi farenin tıklandığı ilk karede doğrudur. Veya diğer cevap devletler olarak, bir InputProcessor (veya InputAdapter) kullanın ve touchDown olayı işleyebilir:

Gdx.input.setInputProcessor(new InputAdapter() { 
    public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
     if (button == Buttons.LEFT) { 
      // do something 
     } 
    } 
});