加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d中的序列和Spawns

发布时间:2020-12-14 20:28:34 所属栏目:百科 来源:网络整理
导读:让精灵在屏幕中进行移动就是我们想要的最终结果了吗?当然不是。可不可以运行多个动作呢?是的,没问题,Cocos2d-x通过几个方式来支持这种操作。 就如同它的名字,一个序列 Sequence 就是多个动作按钮一定顺序进行排列。需要按反方向来播放序列动作?也没问

让精灵在屏幕中进行移动就是我们想要的最终结果了吗?当然不是。可不可以运行多个动作呢?是的,没问题,Cocos2d-x通过几个方式来支持这种操作。

就如同它的名字,一个序列Sequence就是多个动作按钮一定顺序进行排列。需要按反方向来播放序列动作?也没问题,Cocos2d-x也支持这个操作。

看一下面的例子,通过序列Sequence逐步移动一个精灵Sprite:

这个Sequence很容易创建:

auto mySprite = Node::create()
 
// move to point 50,10 over 2 seconds
auto moveTo1 = MoveTo::create(2,Vec2(50,10));
 
// move from current postion 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));
本例中按顺序播放序列中的每一个动作,如何同步一起运行这些动作?Cocos2d-x也支持这个操作,它称做 Spawn 会在同一时间播放所有指定的动作。有一些可能比别的稍长一些,所以出现这种情况动作的播放不会在同一时间完成。

auto myNode = Node::create()
 
auto moveTo1 = MoveTo::create(2,10));
auto moveBy1 = MoveTo::create(2,10));
auto moveTo2 = MoveTo::create(2,10));
 
myNode->runAction(Spawn::create(moveTo1,nullptr));

为什么要使用 呢?有什么理由吗?当然!当游戏的主角获得能力提升时要播放多个动作的时候。当BOSS战的最后阶段需要同时播放多个动作来终结的时候。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读