https://blog.csdn.net/heartrude/article/details/7439315
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