直接看继承关系图:
多数用到的是限时动作,其意思就是有限时间内完成的动作,它又分为瞬时动作和延时动作。
瞬时动作如下:
延时动多就多了,但绝大多数又分为两种即to和by.to是至,by增量。看个例子:
CCActionInterval* actionTo = CCScaleTo::create(2.0f, 0.5f);
CCActionInterval* actionBy = CCScaleBy::create(2.0f, 0.5f);
一个精灵执行了actionTo后的大小是原来的一半。执行actionBy后就是原来的1.5倍。
比较麻烦的就是以下几种了:
CCSequence,即动作会顺序执行,一个执行完了接着执行下一个。
CCSpawn,动作融合,即其参数例表里的动作同时执行。
CCRepeatForever,动作永远执重复执行。
这三个可以组合其他动作,它们之间也可能相互组合。
再有就是可以调用函数的动作了,如下:
一个动作序列,其中顺序执行其中的六个动作,前两个就是传说中的瞬时动作。后三个就是能调动函数的。调用的函数均无返回值。
其参数都有一个target,一个选择器.target是指你要调用哪个对象的方法,这里就是this。假如你有个人类的对象小明,你想调用他的方法,这里this就要
换成小明的指针了。选择器里面的函数名就是你要调用的方法了,在cocos2d中前面不需要指出类名的,但cocos2d-x中是要的,主要原因应该是objc和C++的不同。
并且只是函数名,不要带();
CCCallFunc:调用的方法是不带参数的。
CCCallFuncN:调用的方法是需要一个NODE的指针作为参数,其传过来的就是执行这个动作的NODE,如A->runAction,就是指A,并不是其参数target.
CCCallFuncND:调用的方法是需要一个NODE的指针和一个数据的指针作为参数;可能把数据传过去。
CCCallFuncNO:和上面的CCCallFuncND差不多,不过传的是一个CCObjet*.
还有一个情况,如下:
CCActionInterval* act1 = CCRotateTo::create(1, 90);
CCActionInterval* act2 = CCTintTo::create(2, 255, 0, 255);
m_tamara->runAction(act1);
m_kathia->runAction(act2);
当执行这四句代码后,两个动作会同时执行。类似CCSpawn。
action的具体实现没有具体研究,不过我觉得你可以把它当成一个线程来用。比如,你可以用CCCallFunc预加载一些资源等,这样程序可以一直执行,不用
等待。类似执行一次的schedule。很多用到线程的时候用这两个替代未常不可。
好了,就想到这些东西,再想到再补充吧。
第一次写,不足之处还望指正。
转载请注明出处。