Não consegui encontrar uma maneira de verificar se uma ação especial (paralela a algumas outras no mesmo ator) foi concluída. Algo como uma interface Action.OnCompletionListener como Music.OnCompletionListener seria muito bom.
Ação a = Actions.fadeOut(10);
a.setOnCompletionListener(new Action.OnCompletionListener() {
//faça alguma coisa.
})
Existe uma razão especial pela qual não há nada como isso integrado?
Você pode usar:
sequence(someAction, new Action() {
public boolean act (float delta) {
// This runs when someAction is done.
return true;
}
});
// OR, one line of code less:
sequence(someAction, run(new Runnable() {
public void run () {
// This runs when someAction is done.
}
}));
Não consigo pensar em um cenário em que um ouvinte de conclusão seja mais útil.
Ah, isso é bom! Muito obrigado. Não sabia que você pode integrar suas próprias ações tão facilmente.
A propósito, você poderia me explicar o que um AfterAction faz (Actions.after(Action))? Eu não conseguia descobrir o quê. Tropecei nele enquanto procurava um método de ouvinte.
Sim, toda a ideia com ações é que você pode facilmente escrever suas próprias ações. :)
AfterAction "Executa uma ação somente depois que todas as outras ações no ator no momento em que essa ação foi adicionada forem concluídas." Então, você adiciona a ação e ela não é concluída até que todas as outras ações sejam concluídas. Você pode usar isso para bloquear uma sequência para fazer as coisas acontecerem depois de outras coisas.
CountdownEventAction é outra maneira de controlar as ações que acontecem depois de outras coisas. Veja este tópico e a postagem do blog vinculada a partir daí:
http://www.badlogicgames.com/forum/viewtopic.php?t=12322&p=56104
Comentários muito úteis
Você pode usar:
Não consigo pensar em um cenário em que um ouvinte de conclusão seja mais útil.