我想检查触摸屏是否被触摸并移动纹理的位置。通过检查input.isTouched()
它运行良好,触摸屏触摸时,我的纹理运动平稳。
public void update() {
if(input.isTouched()){
x += 60 * Gdx.graphics.getDeltaTime()
}
}
public void render(SpriteBatch batch){
batch.begin();
batch.draw(texture, x, y);
batch.end();
}
现在我想在input.justTouched()
时实现纹理的移动。在这种情况下,当我执行x += 600;
时,我的纹理将只移动一帧。我的想法是我的渲染方法中的第二种渲染方法,但我认为这并不高效,老实说,我不知道它是如何工作的。
答案 0 :(得分:0)
if(Gdx.input.isTouched()){ // condition true when screen is currently touched.
x += 60 * Gdx.graphics.getDeltaTime();
}
所以我们需要保持条件/标志为true,以便在你的情况下达到600的所需帧数。
有许多可能的解决方案来实现这一点,最简单的是:
public class GdxTest extends ApplicationAdapter {
Texture texture;
SpriteBatch spriteBatch;
float x,y,endX;
@Override
public void create() {
texture=new Texture("badlogic.jpg");
spriteBatch=new SpriteBatch();
y=20;
x= endX=10;
}
@Override
public void render() {
Gdx.gl.glClearColor(1,1,1,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
spriteBatch.begin();
spriteBatch.draw(texture,x,y);
spriteBatch.end();
if(Gdx.input.justTouched()){ // when new touch down event just occurred.
endX=600; // give destination
}
if(x<endX){ // this condition will true unless x reaches endX or crossed
x+=60 * Gdx.graphics.getDeltaTime();
}
}
@Override
public void dispose() {
texture.dispose();
spriteBatch.dispose();
}
}