我是libgdx的新手,我不知道是否應該使用render()方法來獲取用戶輸入,或者是否應該使用InputProcessor。檢測render()中的用戶輸入或在libgdx中使用InputProcessor
1
A
回答
0
對於用戶輸入,您應該使用InputProcessor。
如果你想要寫匿名然後show方法,你應該寫: -
Gdx.input.setInputProcessor(new InputProcessor() {
@Override
public boolean touchUp(int arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDragged(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDown(int arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean scrolled(int arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean mouseMoved(int arg0, int arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyUp(int arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyTyped(char arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyDown(int arg0) {
// TODO Auto-generated method stub
return false;
}
});
也可以實現輸入處理器和setInputProcessor註冊實例。 例子: -
public class InputTest implements InputProcessor {
@Override
public boolean keyDown(int arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyTyped(char arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyUp(int arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean mouseMoved(int arg0, int arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean scrolled(int arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDown(int arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDragged(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchUp(int arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
}
在屏幕類的顯示方法你應該寫: -
public void show() {
Gdx.input.setInputProcessor(new InputTest());
}
在我的建議
這兩個是拿用戶的輸入,如果你的最佳途徑沒有使用階段。 希望這會對你有用。
0
這取決於用例。你爲什麼需要它,需要做什麼event driven或continuous?
例如,如果你想同時某個鍵被按下屏幕上移動精靈,那麼這是一個連續動作:
@Override public void render() {
if (Gdx.input.isKeyPressed(Input.Keys.SPACE))
sprite.translateX(speed * Gdx.graphics.getDeltaTime());
...
}
但是,如果例如想改變顏色當用戶按下某個鍵,那麼這就是一個事件:
@Override public void create() {
Gdx.input.setInputProcessor(new InputAdapter() {
@Override public boolean keyUp (int keycode) {
if (keycode == Input.Keys.SPACE)
sprite.setColor(Color.RED);
}
});
...
}
注意查詢是一個建立在事件之上的便捷方法,它是你自己很容易說。像這樣:
private boolean moving;
@Override public void create() {
Gdx.input.setInputProcessor(new InputAdapter() {
@Override public boolean keyDown (int keycode) {
if (keycode == Input.Keys.SPACE)
moving = true;
}
@Override public boolean keyUp (int keycode) {
if (keycode == Input.Keys.SPACE)
moving = false;
}
});
...
}
@Override public void render() {
if (moving)
sprite.translateX(speed * Gdx.graphics.getDeltaTime());
...
}
這常常讓你寫出更乾淨,用例特定的代碼,就像這樣:
private float speed;
@Override public void create() {
Gdx.input.setInputProcessor(new InputAdapter() {
@Override public boolean keyDown (int keycode) {
switch (keycode) {
case Input.Keys.LEFT: speed -= 10f; break;
case Input.Keys.RIGHT: speed += 10f; break;
}
}
@Override public boolean keyUp (int keycode) {
switch (keycode) {
case Input.Keys.LEFT: speed += 10f; break;
case Input.Keys.RIGHT: speed -= 10f; break;
}
}
});
...
}
@Override public void render() {
sprite.translateX(speed * Gdx.graphics.getDeltaTime());
...
}
考慮到這一點,它可以在許多情況下,最好使用事件驅動輸入處理。但是,如果您發現自己使用了很多boolean
標誌,那麼您還可以使用內置輸入輪詢。
相關問題
- 1. iphone sdk - 檢測用戶或光輸入
- 2. LibGDX InputProcessor無法在android
- 3. 使用耳機檢測用戶輸入
- 4. 如何檢測用戶在iOS中使用語音輸入?
- 5. 如何檢測用戶是否在Java中使用jTextpane輸入
- 6. 如何檢測用戶是輸入法的中途輸入?
- 7. Libgdx scene2d inputprocessor不工作?
- 8. 在Python中檢測用戶輸入中的最低值3.6
- 9. 檢測用戶是否正在輸入
- 10. LibGdx輸入處理和碰撞檢測
- 11. Libgdx Actor未檢測到觸摸輸入
- 12. R中的單行用戶輸入
- 13. 如何檢測用戶輸入的c#
- 14. 檢測用戶的空/空輸入
- 15. 檢測輸入使用JavaScript
- 16. 從用戶在bash中輸入的日期檢測DST
- 17. 檢測用戶在文本框中輸入的內容
- 18. 檢測用戶在輸入框中刪除的時間
- 19. 如何在C++中檢測CTRL-X的用戶輸入
- 20. 如何檢測用戶在EditText中的輸入?
- 21. 在Silverlight中檢測對用戶輸入控件的更改?
- 22. 使用setInterval的,但要禁用它,當用戶輸入檢測
- 23. 用戶在使用jQuery時不關注輸入框時檢測?
- 24. 使用R工具在Alteryx中輸出異常檢測(Twitter包)
- 25. 在C中檢查用戶輸入#
- 26. 在LibGDX InputProcessor中,每個KeyDown()都有相應的KeyUp()嗎?
- 27. 當用戶在jquery中啓動/停止輸入時檢測
- 28. 在UITextView中檢測用戶輸入(除了委託)
- 29. 檢測用戶在textarea中輸入,停止div刷新,JQUERY
- 30. 如何在bash/unix腳本中檢測用戶輸入?
由你決定。根據我的經驗,InputProfessor通常會導致更簡單的代碼。 – Tenfour04