2017-02-22 4 views
1

В Java (Android) анимация рисования/рендеринга libgdx, когда только что коснулась другого, отобразит определенный фрагмент анимации. Проблема в том, что когда я касаюсь экрана, он просто отображает анимацию для разделения секунды.В Java (Android) анимация рисования/рендеринга libgdx при касании

//@render Spritebatch sb; 

    if(Gdx.input.justTouched()){ 
     sb.draw((Texture) animation.getKeyFrame(timePassed,true), Gdx.graphics.getWidth() * 0.03f, Gdx.graphics.getHeight() * 0.03f, (Gdx.graphics.getWidth() * 1/6), (Gdx.graphics.getHeight()/2) + (Gdx.graphics.getHeight() * 0.13f)); 
    } 

    else{ 
     sb.draw(shot[1], Gdx.graphics.getWidth() * 0.03f, Gdx.graphics.getHeight() * 0.03f, (Gdx.graphics.getWidth() * 1/6), (Gdx.graphics.getHeight()/2) + (Gdx.graphics.getHeight() * 0.13f)); 
    } 
+0

нужно еще немного кода метод отрисовки? – Aryan

+0

Я хочу, чтобы анимация запускалась (полная анимация), когда я коснулся экрана и после завершения анимации, он вернется к определенной позиции ... Но этот код, который я отправляю внутри рендера метод был, когда я коснулся экрана, он просто отобразит его анимацию для разделения секунды (например, мигает). –

+0

@AbhishekAryan да пожалуйста: D –

ответ

0

Второй аргумент getKeyFrame (..) разрешает цикл, является ли анимация циклической или нет. Установите значение true. Почему бы вам не использовать animation.getKeyFrame(stateTime) вместо animation.getKeyFrame (float stateTime, boolean looping). Убедитесь, что Animation.PlayMode зациклен.

if(!Gdx.input.justTouched()){ 
     sb.draw(shot[1], Gdx.graphics.getWidth() * 0.03f, Gdx.graphics.getHeight() * 0.03f, (Gdx.graphics.getWidth() * 1/6), (Gdx.graphics.getHeight()/2) + (Gdx.graphics.getHeight() * 0.13f)); 
} 
else{ 
     sb.draw((Texture) animation.getKeyFrame(timePassed,true), Gdx.graphics.getWidth() * 0.03f, Gdx.graphics.getHeight() * 0.03f, (Gdx.graphics.getWidth() * 1/6), (Gdx.graphics.getHeight()/2) + (Gdx.graphics.getHeight() * 0.13f)); 
    } 
+0

Да, это правильная форма, мне плохо, спасибо ... Но когда я касаюсь экрана, анимация идет так быстро. как мигать. –

+0

увеличить timePassed, когда вы коснулись, чтобы в следующий раз, когда вы коснулись его, начните анимацию с этого кадра. в противном случае, если вы хотите начать с исходного кадра, сделайте timePassed значение равным нулю. – Aryan

+0

Прошу прощения, я новичок в этом, но что такое stateTime и что он делает? –

0

@AbhishekAryan спасибо, сэр, я получил ответ

timePassed += Gdx.graphics.getDeltaTime(); 
    if(Gdx.input.justTouched() || touch==true){ 
     touch=true; 
     sb.draw((Texture) animation.getKeyFrame(timePassed,true), Gdx.graphics.getWidth() * 0.03f, Gdx.graphics.getHeight() * 0.03f, (Gdx.graphics.getWidth() * 1/6), (Gdx.graphics.getHeight()/2) + (Gdx.graphics.getHeight() * 0.13f)); 
      if(animation.getKeyFrameIndex(timePassed) == 18){ 
       touch=false; 
       timePassed=0; 
      } 
    } 
    else if(touch == false){ 
     sb.draw(shot[1], Gdx.graphics.getWidth() * 0.03f, Gdx.graphics.getHeight() * 0.03f, (Gdx.graphics.getWidth() * 1/6), (Gdx.graphics.getHeight()/2) + (Gdx.graphics.getHeight() * 0.13f)); 
     } 
Смежные вопросы