`
frank__wang
  • 浏览: 21648 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cocos2dx --- Action介绍

阅读更多

原文来自:http://www.cnblogs.com/changchao/archive/2013/05/07/3065254.html

1. cocos2dx中,CCAction的类的结构图
<ignore_js_op style="word-wrap: break-word;">07181004-05b12de7eb664137a955b1bb4d3e24e6.png 

2.动作的基类是CCAction,通过继承它可以实现很多不同的动作,主要分为三大类:CCFiniteTimeAction(有限次动作执行类)、CCSpeed(节点执行速度类)、CCFollow(节点跟随另一个节点移动)。在实际中,主要用到的是CCFiniteTimeAction类。

3.CCFiniteTimeAction分为CCActionInstant(瞬时动作)和CCActionInterval(延迟动作)。其中CCActionInstant动作没有执行过程,动作瞬时完成,而CCActionInterval动作执行需要一定的时间(或者一个过程)。在实际中,为了制作出炫丽的动画效果,使用得多的是CCActionInterval延时动作。

4.在上面的类结构图中,CCActionInterval的子类很多,简单介绍其中常用的,也可以通过cocos2d-x中自带的TestCpp例子来学习。(1) CCMoveTo / CCMoveBy 移动两者的主要差别在于CCMoveTo是移动到指定坐标,CCMoveBy是相对坐标。例如CCMoveTo(2.0f, ccp(50, 50))是在2s时间内移动到点x = 50、y = 50处,而CCMoveBy(2.0f, ccp(50, 50))表示2s时间内向x方向移动50个单位,向y方向移动50个单位;(2) CCScaleTo / CCScaleBy 缩放;(3) CCRotateTo / CCRotateBy 旋转;(4) CCSkewTo / CCSkewBy 扭曲;(5) CCJumpTo / CCJumpBy 跳跃;(6) CCBezierTo / CCBezierBy 贝塞尔曲线;(7) CCBink 闪烁;(8) CCFadeIn / CCFadeOut 淡入淡出;(9) CCTintTo / CCTintBy 染色,等

5.下面就个人体会,重点分析以下几个动作:CCSequence,CCSpawn,CCRepeat,CCRepeatForever,CCActionCamera
  CCSequence:是用来按顺序执行一系列的动作。需要注意是,在执行的动作系列中不能出现CCRepeat这种无限的动作。

  1. CCMoveTo* move_1 = CCMoveTo::create(2,ccp(10,20));
  2. CCMoveBy* move_2 = CCMoveBy::create(2,ccp(10,20));
  3. CCMoveTo* move_3 = CCMoveBy::create(2,ccp(10,20));
  4. CCSequence* seq = CCSequence::create(move_1,move_2,move_3,NULL);
  5. sprite->runAction(seq);
复制代码


CCSpawn:同时执行一系列动作,执行的时间以子动作中最长事件为准。

  1. CCSpawn* action = CCSpawn::create( 
  2. CCJumpBy::create(2 ,ccp(300,0) ,50 ,4), 
  3. CCRotateBy::create(2,720), NULL); 
  4. sprite->runAction(action);
复制代码


CCRepeat:有限次重复一个动作。

  1. CCMoveBy* action = CCMoveBy::create(2,ccp(10,10));
  2. CCRepeat* repeat = CCRepeat::create(action,3);
  3. sprite->runAction(repeat);
复制代码


CCRepeatForerver:无限次重复一个动作。

  1. CCRotateBy* rotate = CCRotateBy::create(1.0,360); 
  2. CCRepeatForever* action2 = CCRepeatForever::create(rotate); 
  3. sprit->runAction(action2);
复制代码
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics