package loon.action; import loon.utils.TArray; /** * 同时运行多个ActionEvent */ public class ParallelTo extends ActionEvent { private TArray<ActionEvent> events = null; public ParallelTo(ActionEvent... eves) { events = new TArray<ActionEvent>(eves); } public ParallelTo(TArray<ActionEvent> list) { events = new TArray<ActionEvent>(list); } @Override public void update(long elapsedTime) { int over = 0; TArray<ActionEvent> actions = this.events; for (int i = 0, n = actions.size; i < n; i++) { ActionEvent currentAction = actions.get(i); if (currentAction != null) { if (!currentAction.isInit) { currentAction.isInit = true; currentAction.onLoad(); } if (!currentAction.isComplete()) { currentAction.step(elapsedTime); } else { currentAction.stop(); over++; } } } this._isCompleted = (over == actions.size); } @Override public void onLoad() { TArray<ActionEvent> actions = this.events; for (int i = 0, n = actions.size; i < n; i++) { ActionEvent currentAction = actions.get(i); if (currentAction != null) { currentAction.start(original); } } } @Override public boolean isComplete() { return _isCompleted; } @Override public ActionEvent cpy() { TArray<ActionEvent> tmp = new TArray<ActionEvent>(events.size); for (int i = 0, size = events.size; i < size; i++) { tmp.add(events.get(i).cpy()); } ParallelTo p = new ParallelTo(tmp); p.set(this); return p; } @Override public ActionEvent reverse() { TArray<ActionEvent> tmp = new TArray<ActionEvent>(events.size); for (int i = 0, size = events.size; i < size; i++) { tmp.add(events.get(i).reverse()); } ParallelTo p = new ParallelTo(tmp); p.set(this); return p; } @Override public String getName() { return "parallel"; } }