我尝试使用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();
}
}
每次拖动鼠标都应该显示一些内容..如何实现?
答案 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;
}
如果有什么事情不是很清楚,请告诉我。祝你好运!