2014-12-04 122 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