libGDX:如果只是触摸,则运动平稳

时间:2017-06-07 18:14:26

标签: android libgdx textures

我想检查触摸屏是否被触摸并移动纹理的位置。通过检查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;时,我的纹理将只移动一帧。我的想法是我的渲染方法中的第二种渲染方法,但我认为这并不高效,老实说,我不知道它是如何工作的。

1 个答案:

答案 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();
   }
}