【玩转cocos2d-x之九】动作类CCAction

原创作品,转载请标明:http://blog.youkuaiyun.com/jackystudio/article/details/12770909


精灵也出来了,但是不会动的精灵是木有用的。。。CCAction就是负责来解决精灵运动的问题。


1.概况


CCAction直接从CCObject继承而来,注意它代表的是一个动作,是动词。精灵执行了这个动作,而不是名词。CCAction本身并没有什么功能,主要是定义了一些通用函数和虚函数让子类实现多态性。


2.接口

  1. //返回一个描述
  2. constchar*description();
  3. //返回动作是否结束
  4. virtualboolisDone(void);
  5. //在动作开始前调用,需要设置目标精灵
  6. virtualvoidstartWithTarget(CCNode*pTarget);
  7. //每帧调用,time在0~1之间,0代表动作刚开始,0.5代表动作执行一半,1代表动作结束
  8. virtualvoidupdate(floattime);
  9. //返回/设置目标节点
  10. CCNode*getTarget(void);
  11. voidsetTarget(CCNode*pTarget);
  12. //获取/设置上一个节点
  13. CCNode*getOriginalTarget(void);
  14. voidsetOriginalTarget(CCNode*pOriginalTarget);
  15. //获取/设置标签
  16. intgetTag(void);
  17. voidsetTag(intnTag);
  18. //创建动作静态方法
  19. staticCCAction*create();


3.CCFollow

CCFollow跟随动作,继承于CCAction,可以实现节点跟随另一个节点动作。它内部封装了一个boundary,也就是跟随范围,初始为CCRectZero。

  1. //创建一个CCFollow对象,create实际上调用了initWithTarget
  2. staticCCFollow*create(CCNode*pFollowedNode,constCCRect&rect=CCRectZero);
  3. boolinitWithTarget(CCNode*pFollowedNode,constCCRect&rect=CCRectZero);


4.CCSpeed

CCSpeed可调整速度动作类,内部封装了一个速度值,CCSpeed使用很简单,就是传入一个动作和速度,在内部重新copy一个新的动作返回。

  1. //创建一个可变速度动作类,传入速度值
  2. staticCCSpeed*create(CCActionInterval*pAction,floatfSpeed);


5.CCFiniteTimeAction

CCFiniteTimeAction有限次动作执行类,继承于CCAction,它有两个子类CCActionInstant和CCActionInterval,前者代表瞬时动作,也就是这个动作基本不需要时间马上就能完成,而后者代表延时,这个动作需要一段时间来运行。它的子类说明看上图吧。

相比CCAction,它多了一个m_fDuration属性,表示持续时间。

  1. //获取/设置动作持续时间
  2. floatgetDuration(void);
  3. voidsetDuration(floatduration);
  4. //反转动作,类似于倒带效果,返回一个新的动作
  5. virtualCCFiniteTimeAction*reverse(void);

好了,游戏的基本元素就写到这里,写API文档很蛋疼的说。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值