CCAction在cocos2dx中,抽象了节点的动作。它由CCObject派生,因此它不是渲染节点。
它经常的用法是,创建一个action,然后让某个CCNode对象(一般是精灵),去执行它。
在马里奥代码里,执行马里奥跳跃的代码如下:
//增加跳跃运动 CCJumpTo *pJump = CCJumpTo::create(_MARIO_BASIC_JUMP_TIME_,ccp(getPositionX(),getPositionY()-10.f),_MARIO_BASIC_JUMP_HEIGHT_,1); if(pJump==NULL) { CCAssert(false,"Can't Create Jump!"); return; } //为Jump设置独立的Tag pJump->setTag(enTagOfActionJump); runAction(pJump);
在实际的工作中,往往使用的是CCAction的子类,CCAction有丰富的子类,来抽象各种动作,比如上面例子中的跳跃,还有移动,瞬间移动等。
具体的CCAction的派生类有以下:
CCFlipX和CCFlipY:水平翻转和竖直翻转
CCPlace:放置
CCHide和CCShow:隐藏和显示
CCToggleVisibility:可见开关,执行一次从可见到不可见,再执行一次就反过来
CCReuseGrid和CCStopGrid:使用和停止网格动作
CCCallFunc,CCCallFuncND,CCCallFuncN,CCCallFuncO:函数调用动作,执行这个动作只是执行一个函数
CCMoveBy,CCMoveTo,CCJumpBy,CCJumpTo,CCBezierBy,CCBezierTo:精灵移动动作
CCScaleBy,CCScaleTo:缩放动作
CCRotateBy,CCRotateTo:旋转动作
CCSkewTo,CCSkewBy:倾斜动作
CCFadeIn,CCFadeOut,CCFadeTo:淡化动作
CCTineBy,CCTineTo:颜色变化动作
CCBlink:闪烁动作
CCSequence:连续动作,连续动作通过几个action构造,执行这个序列时,实际执行的参数指定的那些动作
CCSpawn:同时动作,跟连续动作不同的时,参数指定的几个动作会同时执行
CCRepeat和CCRepeatForever:重复执行
CCEaseIn,CCEaseOut,CCEaseInOut:可变速度动作类
CCDelay:延迟动作类
CCFollow:跟随动作类
这里把所有的action都列出来,并没有详细展开讨论,大家可以写个代码去验证一下,各种action的乐趣