LibGDX:如何用手指移动矩形?

问题描述:

我正在尝试用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

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