1.2.5 序列(Sequence)
优质
小牛编辑
128浏览
2023-12-01
能在屏幕上移动精灵,是制作一个游戏所需的一切,是吗?不是的,至少要考虑一下如何执行多个 Action
。Cocos2d-x 通过 序列(Sequence) 来支持这种需求。
顾名思义,序列就是多个动作按照特定顺序的一个排列,当然反向执行这个序列也是可以的,Cocos2d-x 能很方便的完成这项工作。
让我们来看一个通过序列控制精灵移动的例子:
创建 Sequence
:
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));
这个例子执行了一个动作的 Sequence
序列,那要是想让所有的特定动作同时执行呢?Cocos2d-x 也支持!通过引擎中的 Spawn
对象,你能让多个动作同时被解析执行。可能不同动作的执行时间不一致,在这种情况下,他们不会同时结束。
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));
为什么要有同时执行多个动作的需求呢?当然是有原因的啦!比如你的游戏角色被电了,或者在关卡结束打 boss 的时候,想一想类似的场景.