Мне не удалось найти способ проверить, завершено ли специальное действие (параллельное с некоторыми другими на том же актере). Что-то вроде интерфейса Action.OnCompletionListener, такого как Music.OnCompletionListener, было бы действительно неплохо.
Действие a = Действия.fadeOut(10);
a.setOnCompletionListener (новый Action.OnCompletionListener() {
//сделай что-нибудь.
})
Есть ли особая причина, по которой ничего подобного не интегрировано?
Вы можете использовать:
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.
}
}));
Я не могу придумать сценарий, в котором прослушиватель завершения был бы более полезен.
О, это хорошо! Большое спасибо. Не знал, что вы можете так легко интегрировать свои собственные действия.
Кстати, не могли бы вы объяснить мне, что делает AfterAction (Actions.after(Action))? Я не мог понять, что. Наткнулся на него при поиске метода прослушивания.
Да, вся идея действий в том, что вы можете легко написать свои собственные. :)
AfterAction «Выполняет действие только после того, как все другие действия над субъектом на момент добавления этого действия завершены». Таким образом, вы добавляете действие, и оно не завершается, пока не будут выполнены все остальные действия. Вы можете использовать это, чтобы заблокировать последовательность, чтобы вещи происходили после других вещей.
CountdownEventAction — это еще один способ контролировать выполнение действий после других событий. См. эту тему и сообщение в блоге, связанное оттуда:
http://www.badlogicgames.com/forum/viewtopic.php?t=12322&p=56104
Самый полезный комментарий
Вы можете использовать:
Я не могу придумать сценарий, в котором прослушиватель завершения был бы более полезен.