cocos2d-x的action

Action可以说是cocos2d一个精华设计。下面从整体上说明一下我的学习心得。

在cocos2d-x中,node的很多变化都可以作为action(指令)来执行。action可以帮助我们控制执行时间,执行过程调整以及执行完毕通知。从而通过异步完整的封闭了执行过程,通过通知又可以提供同步手段。很好使用。

所有的Action类图如下:

从类图上可以看出,Action主要是3大块,CCFiniteTimeAction、CCFollow、CCSpeed。

CCFollow目前主要可以用来进行镜头跟踪。是使得一个node跟随另一个node的Action。

CCSpeed可以修改Node的执行速度。通过该Action可以实现慢动作观看。

CCFiniteTimeAction是使用比较多,而且功能分类也比较多的一个大块。根据执行时间可以区分为立即动作和持续动作。该动作相对另外两块就是该动作必定在一定时间周期内执行完毕的。

立即动作CCActionInstant:就是该动作立刻执行,马上就能结束。

持续动作CCActionInterval:就是动作会持续一段时间,会异步进行执行。

有关CCFiniteTimeAction的各个子类的效果,建议观看一下cocos2d-x自带的test demo。可以获得直观的理解。

目前我比较喜欢的使用手段是进行CCSquence Action的执行,在CCSquence中间包括CCCallFunc的回调,进行Action和游戏逻辑的同步。

比如:

for (std::vector::iterator veIt = arCellCheck.begin(); veIt != arCellCheck.end(); veIt++)
{
CCAnimation *animation = CCAnimation::animation();
animation->setDelay(0.2f);
for(int i=0;i<4;i++) animation->addFrameWithTexture(m_explodeTexture, CCRectMake(i32,0,32,32)); CCAnimate animate = CCAnimate::actionWithAnimation(animation);
(*veIt)->runAction(CCSequence::actions(animate, CCCallFuncN::actionWithTarget(this, callfuncN_selector(KPairUp::OnExplodeEnd)),NULL));
}

该Action执行,在爆炸完毕后,就会进行回调,进行状态机的后续切换。

一些立即和持续动作方面可以了解下:

立即动作:

http://4137613.blog.51cto.com/4127613/762321
持续动作:

http://4137613.blog.51cto.com/4127613/762768

http://4137613.blog.51cto.com/4127613/763464
————————————————
版权声明:本文为CSDN博主「SuperKuku」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/heartrude/article/details/7439315

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值