Sequences and Spawns
With moving Sprite objects on the screen we have everything we need to create
our game, right? Not quite. What about running multiple Actions? Yes,
Cocos2d-x handles this too in a few different ways.
Just like it sounds, a Sequence is multiple Action objects run in a specified
order. Need to run the Sequence in reverse? No problem, Cocos2d-x handles
this with no additional work.
Take a look at the flow of an example Sequence for moving a Sprite
gradually:

This Sequence is easy to make:
auto mySprite = Node::create();
// move to point 50,10 over 2 seconds
auto moveTo1 = MoveTo::create(2, Vec2(50,10));
// move from current position by 100,10 over 2 seconds
auto moveBy1 = MoveBy::create(2, Vec2(100,10));
// move to point 150,10 over 2 seconds
auto moveTo2 = MoveTo::create(2, Vec2(150,10));
// create a delay
auto delay = DelayTime::create(1);
mySprite->runAction(Sequence::create(moveTo1, delay, moveBy1, delay.clone(),
moveTo2, nullptr));
This example runs a Sequence, in order, but what about running all the
specified Actions at the same time? Cocos2d-x supports this too and it
is called Spawn. Spawn will take all the specified Action objects and
executes them at the same time. Some might be longer than others, so they won't
all finish at the same time if this is the case.
auto myNode = Node::create();
auto moveTo1 = MoveTo::create(2, Vec2(50,10));
auto moveBy1 = MoveBy::create(2, Vec2(100,10));
auto moveTo2 = MoveTo::create(2, Vec2(150,10));
myNode->runAction(Spawn::create(moveTo1, moveBy1, moveTo2, nullptr));
Why Spawn actions? Is there ever a reason? Sure! What if your main
character has multiple Actions when obtaining a power up? Maybe beating
the boss at the end of a level has multiple Actions that need to happen
to end the level.