2015-04-04---CCAction详解(欠了大家好几天了)

2015-04-04---CCAction详解(欠了大家好几天了),第1张

概述前几天就是懒了,白天上课,然后晚上回来几乎也弄不了什么就睡了,所以就没发什么,今天总算打起精神继续学习了。我们今天说CCAction包括,CCAction,CCFiniteTimeAction,CCSpeed,CCFollow, 我们开始吧,上图: 首先CCAction分成三类,分别是CCFiniteTimeAction,CCSpeed,和CCFollow CCFiniteTimeAction又分

前几天就是懒了,白天上课,然后晚上回来几乎也弄不了什么就睡了,所以就没发什么,今天总算打起精神继续学习了。我们今天说CCAction包括,CCAction,CCFiniteTimeAction,CCSpeed,CCFollow,

我们开始吧,上图:



首先CCAction分成三类,分别是CCFiniteTimeAction,CCSpeed,和CCFollow



CCFiniteTimeAction又分成两类,上图的CCAction应该写成CCFiniteTimeAction,

CCFiniteTimeAction包括CCActionInstant(瞬时动作),CCActionInterval(延时动作)





瞬时动作又包括以上的几种,这些动作都是在一瞬间完成的,我们看不见变换的过程,应为他太快了。你可能会问CCPlace和setposition不都差不多嘛,何必多此一举来用CCPlace还包装成一个action,其实这些都可以封装成为一个顺序,这不正是CCPlace和setposition的区别了吗。

代码示例:

CCFlipY *flipx = CCFlipY::create(true);CCHIDe *hIDe = CCHIDe::create();CCToggleVisibility *togglevis = CCToggleVisibility::create();CCPlace *place = CCPlace::create(ccp(200,200));


简单用法

以上的几种相对难理解的是假动作CCCallFunc,所以我们具体说说这个。假动作就是没有动作,其实他只是一个回调。

<span >CCCallFunc *callfun = CCCallFunc::create(this,callfunc_selector(T14CCActionDemo::funcall));CCCallFuncN *callfunc = CCCallFuncN::create(this,callfuncN_selector(T14CCActionDemo::funcallN));CCCallFuncND *callfuncnd = CCCallFuncND::create(this,callfuncND_selector(T14CCActionDemo::funcallND),(voID *)("90"));CCCallFuncO *callfunco = CCCallFuncO::create(this,callfuncO_selector(T14CCActionDemo::funcallO),woman);</span>
voID T14CCActionDemo::funcall(){	cclog("action is ok");}voID T14CCActionDemo::funcallN(CCNode* node){	node->setVisible(false);}voID T14CCActionDemo::funcallND(CCNode* pnode,voID* pdata){	CCString *str = CCString::createWithFormat("%s",pdata);	pnode->setRotation(str->floatValue());}voID T14CCActionDemo::funcallO(CCObject* obj){	CCSprite *woman = (CCSprite *)obj;	CCMoveBy *moveby = CCMoveBy::create(2,ccp(200,0));	woman->runAction(moveby);}


我们可以把一些列的假动作全部都加到CCSequence里面,我们不就可以通过假动作来判断执行到了哪一个动作了吗?比如一个CCSequence里有3个,MoveBy,JumpBy,CCCallFunc,这个时候执行到CCCallFunc的回调的时候的时候不就意味着前两个动作执行完了吗。同理这样的应用场景还有很多,

CCCallFunc是一个最基础的假动作,CCCallFuncN可以在回调的时候得到CCNode,CCCallFuncND可以在回调的时候得到CCNode,和Data,Data就是我们手动加的数据,上面的例子就是那个"90"的字符串啊。CCCallFuncO就是可以在会掉的时候得到我们定义的CCObject。





这上面的全部都是延时动作,贴上示例代码:

CCMoveto *moveto = CCMoveto::create(3,ccp(300,100));CCMoveBy *moveby = CCMoveBy::create(2,0));CCMoveBy *moveby2 = CCMoveBy::create(2,0));CCJumpTo *jumpto = CCJumpTo::create(3,100),50,3);CCJumpBy *jumpby = CCJumpBy::create(3,0),150,3);CCScaleto *scaleto = CCScaleto::create(3,2);CCScaleBy *scaleby = CCScaleBy::create(3,2);CCRotateto *rotateto = CCRotateto::create(3,-90);CCRotateBy *rotateBy = CCRotateBy::create(3,-90);CCSpawn *spawn = CCSpawn::create(rotateto,scaleby,NulL);CCSequence *sequence = CCSequence::create(rotateto,NulL);CCSkewTo *skewto = CCSkewTo::create(3,222,222);CCTintTo *tintto = CCTintTo::create(3,255,255);CCFadeIn *fadein = CCFadeIn::create(3);CCFadeOut *fadeout = CCFadeOut::create(3);CCFadeto *fadeto = CCFadeto::create(3,100);CCPointArray *pointarray = CCPointArray::create(6);pointarray->addControlPoint(ccp(100,160));pointarray->addControlPoint(ccp(200,250));pointarray->addControlPoint(ccp(300,160));pointarray->addControlPoint(ccp(450,160));CCCardinalSplineto *cardinal = CCCardinalSplineto::create(10,pointarray,1);CCBlink *blink = CCBlink::create(3,5);CCEaseExponentialin *exponentin = CCEaseExponentialin::create(moveby);CCEaseBackIn *bakcin = CCEaseBackIn::create(moveby);

方法好多好多,具体的可以看API,实在不明白的可以根据上面的实例看API,关于一些缓冲可以自己动手做实验,这里我再怎么说也不顶你自己实践一把。


最后还有CCSpeed和CCFollow,CCSpeed主要就是变速嘛:

CCSpeed *speed = CCSpeed::create(moveby,5);//将速度提升5倍

话说CCFollow我也是半吊子,不敢乱说,自己只亲手做了个实验,今天就弄到这里吧



行啦,博主最近要早睡啦,11点前必须睡,晚安啦~

总结

以上是内存溢出为你收集整理的2015-04-04---CCAction详解(欠了大家好几天了)全部内容,希望文章能够帮你解决2015-04-04---CCAction详解(欠了大家好几天了)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1053425.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存