我在Libgdx游戏上的TouchListener出现问题。
在我的Gamerenderer上我有这个:
private OrthographicCamera camera;
private Vector3 input;
private Array<Objects> objects;
private SpriteBatch batch;
//In Constructor
camera = new OrthographicCamera();
camera.setToOrtho(false, Configuration.screenWidth, Configuration.screenHeight);
batch = new SpriteBatch();
batch.setProjectionMatrix(camera.combined);
objects = myGame.Objects();
input = new Vector3(0, 0, 0);
//My Renderer
public void render(float runtime){
Gdx.app.log("GameRenderer: ", "Render()");
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
input.x = Gdx.input.getX();
input.y = Gdx.input.getY();
camera.unproject(input);
batch.begin();
for (Objects object:objects) {
object.getFont().draw(batch,object.getGlyphLayout(),object.getX(),object.getY());
object.getRec().set(object.getX(),object.getY(),object.getGlyphLayout().width,object.getGlyphLayout().height);
if(Gdx.input.isTouched()){
Gdx.app.log("Clicked", "Touched");
if(object.getRec().contains(input.x, input.y)) {
Gdx.app.log("Clicked", "Great");
}
else {
Gdx.app.log("Clicked", "Noooooooooooo");
}
}
}
}
batch.end();
}
当我运行游戏时,它工作正常,但触摸侦听器有时可以正常工作,但是在触摸几秒钟之后。
Gdx.app.log(“ Clicked”,“ Touched”);被触摸触发。
但Gdx.app.log(“ Clicked”,“ Great”);或Gdx.app.log(“ Clicked”,“ Noooooooooooo”);我必须长按直到触摸被触发。
谢谢
我添加了ShapeRenderer来查看我的对象到底是怎么做的:
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
for(Objects object:objects) {
shapeRenderer.setColor(255 / 255.0f, 0 / 255.0f, 0 / 255.0f, 1);
shapeRenderer.rect(object.getRec().x, object.getRec().y, object.getRec().width, object.getRec().height);
shapeRenderer.setColor(0 / 255.0f, 0 / 255.0f, 255 / 255.0f, 1);
shapeRenderer.rect(object.getX(), object.getY(), object.getGlyphLayout().width, object.getGlyphLayout().height);
}
shapeRenderer.end();
然后我得到这个结果:
黑色矩形是对象,蓝色矩形是对象的Rectangle顶部ShapeRenderer上的对象的ShapeRenderer。
现在,当我单击对象时,它不会触发单击,但是当我单击ShapeRenderer时,它将触发它。
答案 0 :(得分:0)
检查此解决方案:
save as
将 Gdx.input.isTouched() 放入循环中不是一个好主意。
答案 1 :(得分:0)
最后我解决了它,以防万一有人遇到相同的问题,
ALTER TABLE TableName ADD CONSTRAINT DF_TableName DEFAULT GETDATE() FOR ColumnName
我替换了 object.getY()
具有 object.getY()-object.getGlyphLayout()。height