2014-12-04 121 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,這是你在找什麼。
Basicly你需要調用:

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.2秒內將字符透明度從當前變爲0。然後,您可以添加另一個delay,讓字符在不可見狀態下「等待」,並使用Actions.alpha(1, 0.2f)再次使其可見。

希望它有幫助。

+0

非常感謝。我似乎得到它的工作,但不知何故效果似乎不一致。有時它閃爍得太快,我必須調整延遲()和動畫幀持續時間。我不確定現在是否addAction應該是適當的方式來做到這一點,但仍然非常感謝。 – pakito 2014-12-04 08:46:03

+0

這取決於你想用'Action'實現什麼。還要確保,正確的'delta'('Gdx.graphics.getDelta')被用於'update()'Action's和'Animation's。 – Springrbua 2014-12-04 10:03:57

+0

好的,謝謝春天! – pakito 2014-12-04 12:33:00