Cocos通过动作(Action)让精灵动起来,把数个动作组成序列(Sequence)就能让精灵做出连续的动作,在动作中我们可以改变精灵的位置,旋转角度,缩放比例,等等

动作(Action)#

首先我们创建一个Action对象,同样使用create,这里我们还是使用HelloWorld场景里的那张图片

Copy
auto sprite = Sprite::create("sinnosuke.png");

setPosition之后我们加上一句

Copy
// 在2秒内:向右移动精灵50像素,向上移动精灵10像素 auto moveBy = MoveBy::create(2, Vec2(50, 10)); sprite->runAction(moveBy);

这个精灵就会平滑地根据我们输入的参数移动

如果把moveBy改成moveTo,那就会是另一种结果:

Copy
// 在2秒内:把精灵移动到坐标(50,10) auto moveTo = MoveTo::create(2, Vec2(50, 10)); sprite->runAction(moveTo);

精灵直接移动到了(50,10)(锚点在其正中间)

By 和 To 的区别#

  • By算的是相对于节点对象的当前位置
  • To算的是绝对位置,不考虑当前节点对象在哪

动作组合#

你还可以把多个动作加入到一个序列(Sequence)里,让精灵按执行序列

Copy
auto moveBy = MoveBy::create(2, Vec2(50, 10)); auto moveTo = MoveTo::create(2, Vec2(50, 10)); auto delay = DelayTime::create(1);//设置一个一秒的延时,也加入序列中 auto seq = Sequence::create(moveBy, delay, moveTo, nullptr); //做动作moveBy后,延时1秒,做动作moveTo sprite->runAction(seq);

精灵就会按次序执行序列里的动作

序列我们之后再详细讲解

基本动作#