2014-12-04 3 views
2

Я пытаюсь создать последовательность действий для имитации глазного мигания моего персонажа, но я не знаю, как правильно это сделать. Мне нужно, чтобы он стоял на месте, как 5 секунд, затем мигайте один раз и подождите 5 секунд снова и петля навсегда. Надеюсь, кто-то может пролить свет.Как сделать мигающую анимацию в LibGDX

Это то, что у меня до сих пор, не работает, что я ожидал (После 3f, он будет продолжать мигать, как я обнаруживаю мигания конец анимации и сбросить обратно стоять?):

this.addAction(Actions.sequence(
      Actions.run(new Runnable() { 
       @Override 
       public void run() { 
        stand(); 
       } 
      }), 
      Actions.delay(.3f), 
      Actions.run(new Runnable() { 
       @Override 
       public void run() { 
        blink(); 
       } 
      }))); 

ответ

2

Libgdx имеет класс RepeatAction, который является тем, что вы ищете.
Основном вам необходимо позвонить:

this.addAction(Actions.forever(Actions.sequence(
    Actions.run(new Runnable { 
     @Override 
     public void run() { 
      stand(); 
     } 
    }), 
    Actions.delay(0.3f), 
    Actions.run(new Runnable { 
     @Override 
     public void run() { 
      blink(); 
     } 
    }); 
))); 

Но вместо того, чтобы использовать new Runnable вы можете использовать один из методов, предусмотренных LibgdxActions.
Так, например, stand(), разве это не «ничего не делать»? Этого можно достичь с помощью Actions.delay(5f), который ждет 5 секунд.
И blink() это не только переход от «видимого» к «невидимому»?
Это может быть на Actions.alpha(0, 0.2f), что изменяет прозрачность символов от его тока до 0 в 0,2 секунды. Затем вы можете добавить еще один delay, чтобы символ «подождать» в невидимом состоянии и сделать его видимым снова с Actions.alpha(1, 0.2f).

Надеюсь, это поможет.

+0

спасибо. Кажется, я заработал, но как-то эффект не кажется очень последовательным. Иногда он мигает слишком быстро, и мне приходится настраивать задержку() и продолжительность анимации. Я не уверен, что если addAction должен быть подходящим способом сделать это, но все равно спасибо. – pakito

+0

Это зависит от того, чего вы хотите достичь с помощью 'Action'. Также убедитесь, что правильная 'delta' (' Gdx.graphics.getDelta') используется для 'update()' 'Action' 'и' Animation'. – Springrbua

+0

Хорошо спасибо Весна! – pakito

Смежные вопросы