2015-02-07 82 views
0

我正在嘗試用libgdx移動一個矩形與我的手指,但是當我在我的手機上運行代碼它不起作用,矩形停留在左上角。任何想法如何解決這個問題?LibGDX:如何用手指移動矩形?

public class Main extends ApplicationAdapter implements InputProcessor { 
ShapeRenderer shape; 
public int xpos; 
    public int ypos; 
@Override 
public void create() { 
    shape = new ShapeRenderer(); 
} 

@Override 
public void render() { 
    Gdx.gl.glClearColor(0, 255, 255, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    shape.begin(ShapeType.Filled); 
    shape.setColor(1, 1, 0, 1); 
    shape.rect(xpos, ypos, 100, 100); 
    shape.end(); 
} 
@Override 
public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
    xpos = Gdx.input.getX(); 
    ypos = Gdx.input.getY(); 
    return true; 
} 

@Override 
public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
    xpos = Gdx.input.getX(); 
    ypos = Gdx.input.getY(); 
    return true; 
} 

@Override 
public boolean touchDragged(int screenX, int screenY, int pointer) { 
    xpos = Gdx.input.getX(); 
    ypos = Gdx.input.getY(); 
    return true; 
} 

我也實施了InputProcessor接口的所有其他方法,給他們一個return false聲明。但就像我說的這是行不通的...

+3

不要忘記調用'Gdx.input.setInputProcessor(this);'。 – Tenfour04 2015-02-07 17:02:43

+0

給我們更多的信息。你從InputProcessor實現的方法是否被調用? – MilanG 2015-02-07 19:51:57

+0

我已經通過刪除所有輸入處理器stuft並通過將這個if語句添加到render中來實現它的工作方法:if(Gdx.isTouched(){xpos = Gdx.input.getX()並且與ypos和那麼你只需添加ypos = height - ypos或類似的東西我沒有記住代碼,但這對我有用,但是謝謝你的努力 – 2015-02-07 21:42:14

回答

0
if(Gdx.input.isTouched() &&rectangle.contains(Gdx.input.getX(),Gdx.graphics.getHeight() -Gdx.input.getY())) { 
    rectangle.set(Gdx.input.getX(), Gdx.graphics.getHeight() - Gdx.input.getY(), 200, 100); 
} 
else { 
    rectangle.set(rectangle.x, rectangle.y, 200, 100); 
} 
+0

歡迎使用StackOverflow。請從代碼中刪除額外的縮進以使其更具可讀性。最好的祝福 – YakovL 2017-08-23 07:14:13