如何从imputProcessor类中绘制纹理? LibGDX

时间:2015-01-01 04:16:44

标签: java libgdx

我尝试使用LibGDX的 InputProcessor 类绘制内容。但没有画出来!我可以从LibGDX中的任何其他地方而不是 render()类中绘制纹理吗?

是的,如果我在 render()类中绘制它是好的,但是我可以从其他地方绘制,比如 InputProcessor touchDragged?

这是我的代码

public class mm_imput implements InputProcessor {

 SpriteBatch batch=new SpriteBatch();
 Texture pixel=new Texture("something.png");

   @Override
   public boolean touchDragged (int x, int y, int pointer) {

      drawSomething();

   }
   void drawSomething() {
        batch.begin();
        batch.draw(pixel, 100, 100, 100, 100);
        batch.end();
    }

}

每次拖动鼠标都应该显示一些内容..如何实现?

1 个答案:

答案 0 :(得分:1)

您的批处理必须位于Screen类的Render方法中。

在此链接中,您会看到我在谈论的内容:https://github.com/littletinman/Hype/blob/master/Hype/core/src/com/philiproyer/hype/screens/Details.java

我有一个主屏幕类,有一个Render方法。我正在实现InputProcessor接口。

我建议将Render方法置于触摸失败的条件下。

public void render(float delta) {

    Gdx.gl.glClearColor( 0, 0, 0, 1); // Clear the screen with a solid color
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    if(isTouching == true) { // check for touching
      batch.begin();
        batch.draw(pixel, 100, 100, 100, 100);
      batch.end();
    }
}

然后,在touchDown方法中添加类似

的内容
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    isTouching = true; // Set boolean to true
    return false;
}

要确保在停止触摸时将其重置,请在touchUp方法中执行以下操作

public boolean touchUp(int screenX, int screenY, int pointer, int button) {
    isTouching = false; // Set boolean to false
    return false;
}

如果有什么事情不是很清楚,请告诉我。祝你好运!