cocos2d-x for wp之精灵动作——Actions
CCFiniteTimeAction:有限次动作执行类,就是按时间顺序执行一系列动作,执行完后动作结束;这里我们就是学习这个类
从图中,我们可以看出动作主要分为两大类:CCActionInstanse(瞬时动作的基类)和CCActionInterval(延时动作的基类)
CCActionInstanse(瞬时动作的基类):
CCCallFunc :执行函数 CCFlipX/Y: X/Y翻转 CCHide :隐藏
CCPlace : 设置位置 CCReuseGrid :重用网格 CCShow :显示
CCStopGrid :停止网格 CCToggleVisibility : 可见切换
CCActionInterval(延时动作的基类)我们用的最多的就是延时动作。CCActionInterval的子类有很多,可以通过cocos2d-x自带的tests例子来学习。
主要有这些动作:
CCMoveTo/CCMoveBy :移动 CCScaleTo/CCScaleBy:缩放 CCRotateTO/CCRotateBy:旋转
CCSkewTo/CCSkewBy :扭曲 CCJumpTo/CCJumpBy :跳跃 CCBezierTo/CCBezierBy :贝塞尔曲线
CCBink :闪烁 CCFadeIn/CCFadeOut :淡入淡出 CCTintTo/CCTintBy :染色
CCSpawn :同步 CCRepeat/CCRepeatForever :有/无限次重复
CCDelayTime:延迟
下面是一个例子:grossini是一个精灵
CCActionInterval actionBy = CCJumpBy.actionWithDuration(2, new CCPoint(100, 100), 50, 4); CCFiniteTimeAction actionByBack = actionBy.reverse(); grossini.runAction(CCSequence.actions(actionBy, actionByBack));
而一般我们都可以这样写,将几个动作一起组合在一起来实现精灵的动作。
CCAction action = CCSequence.actions( CCSpawn.actions(CCAnimate.actionWithAnimation(animation, false), CCMoveBy.actionWithDuration(0.28f, position), CCCallFuncND.actionWithTarget(this, onWalkDone, tag)) ); grossini.runAction(action);
CCSequence 是动作序列,把若干个动作按顺序组合在一起,然后依次执行。
CCSpawn 是将若干个动作组合在一起,同时执行它们(并行执行),执行时间以最长的那个动作为准。
参数是CCFiniteTimeAction[] actions一个动作数组,比如说CCMoveBy、CCSkewBy、CCScaleBy等动作数组。一般在CCSpawn的最后一个动作放一个CCCallFunc,放一个回调函数(这里是onWalkDone)作为动作执行完后的处理(比如说:显示信息、人物面向等)。