Skip to main content

Coroutines

New ex.coroutine for running code that changes over time, useful for modeling complex animation code. It can do a lot of what the Actions API can do, but this is useful when things really get complicated.

Using Coroutines​

Coroutines start immediately when the coroutine() function is called. Their updates are scheduled using the excalibur Clock.

Coroutines return a promise when they are complete. You can think of each yield as a frame.

  • The result of a yield is the current elapsed time
  • You can yield a number in milliseconds and it will wait that long before resuming
  • You can yield a promise and it will wait until it resolves before resuming
typescript
const completePromise = coroutine(engine, function * () {
let elapsed = 0;
elapsed = yield 200; // frame 1 wait 200 ms before resuming
elapsed = yield fetch('./some/data.json'); // frame 2
elapsed = yield; // frame 3
});
typescript
const completePromise = coroutine(engine, function * () {
let elapsed = 0;
elapsed = yield 200; // frame 1 wait 200 ms before resuming
elapsed = yield fetch('./some/data.json'); // frame 2
elapsed = yield; // frame 3
});