Cocos2d-x学习笔记(十八)之 基本动作
CCAction的子类CCFiniteTimeAction分为瞬时动作(CCActionInstant)和延时动作(CCActionInterval),其中瞬时动作的子类如下:
CCCallFunc:执行回调函数。
CCFilpX:x轴镜像翻转。
CCFilpY:y轴镜像翻转。
CCHide:隐藏。
CCPlace:设置位置。
CCReuseGrid:重用网络。
CCShow:显示。
CCStopGrid:停止网格。
CCToggleVisibility:可见切换。
瞬时动作,顾名思义,就是直接调用结果的动作,这中间不产生任何动画效果。
延时动作(CCActionInterval)则不同,它会形成动画过程,其子类如下:
CCBezierBy:贝塞尔曲线,移动固定的距离。它有一个子类CCBezierTo,也是贝塞尔曲线,移动到固定的点上。
CCBlink:闪烁。
CCDelayTime:延迟。
CCFadeTo:变暗。
CCMoveTo:移动到目的点。子类CCMoveBy,x、y轴坐标分别移动相应的相对距离。
CCRotateTo:移动到相应的角度。有子类CCRotateBy,移动相应的角度,是在目前角度的基础上加上相对值。
CCFadeIn:由无变亮。
CCFadeOut:由亮变无。
CCJumpBy:按抛物线轨迹移动相应距离,参数是相对的距离。有子类CCJumpTo,跳跃到某个固定的位置。
CCSequence:动作序列。
CCSpawn:合并多个动作,使多个动作同时进行。
CCScaleTo:缩放到原来的固定倍数。有子类CCScaleBy,缩放相对的倍数。
CCTintTo:色调变化到。
CCTintBy:色调变化相对数值。
CCAnimate:动画。
CCReverseTime:时间逆向。
CCRepeat:有限次重复。
CCRepeatForever:无限次重复。
CCActionCamera:摄像机动作。
CCSkewTo:扭曲效果到设定的参数。有子类CCSkewBy,移动相对的参数。
CCTargetedAction:动作的目标并不一定是动作的执行者动作。
CCCardinalSplineTo:基样曲线移动到相应位置,也有CCCardinalSplineBy等其他子类。
CCDeccelAmplitude:有相应幅度参数的动作,附带动作时间,有减速效果。
CCAccelAmplitude:有相应幅度参数的动作,附带动作时间,有加速效果。
CCAccelDeccelAmplitude:有相应幅度参数的动作,附带动作时间,有变速效果。
好了,下面我们就来看一些动作类的使用示例:
1、移动动作:
1 CCSize s = CCDirector::sharedDirector()->getWinSize();
2 //参数:时间、位置对象
3 CCActionInterval* actionTo = CCMoveTo::create(2, CCPointMake(s.width - 40, s.height- 40));
4 CCActionInterval* actionBy = CCMoveBy::create(2, CCPointMake(80, 80));
5 //动作倒置
6 CCActionInterval* actionByBack = actionBy->reverse();
7
8 m_tamara->runAction( actionTo );
9 m_grossini->runAction( CCSequence::create( actionBy, actionByBack, NULL ) );
10 m_kathia->runAction( CCMoveTo::create(1, CCPointMake(40, 40)) );
2、缩放动作:
1 //可以两个参数或三个参数:两个参数:时间间隔、缩放比例,三个参数:时间间隔、x轴缩放比例、y轴缩放比例。
2 CCActionInterval* actionTo = CCScaleTo::create(2.0f, 0.5f);
3 CCActionInterval* actionBy = CCScaleBy::create(2.0f, 1.0f, 10.0f);
4
5 m_grossini->runAction( actionTo );
6 m_tamara->runAction( CCSequence::create( actionBy, actionBy->reverse(), NUKK ) );
3、扭曲动作:
1 //参数:时间间隔、x轴扭曲参数、y轴扭曲参数
2 CCActionInterval* actionTo = CCSkewTo::create(2, 30.0f, -10.0f);
3 CCActionInterval* actionBy = CCSkewBy::create(2, 0.0f, -10.0f);
4 m_tamara->runAction( CCSequence::create( actionTo, actionTo->reverse(), NULL ) );
5
6 m_grossini->runAction( CCSequence::create( actionBy, actionBy->reverse(), NULL ) );
好了,实例就列举这么几个吧,其他的基本动作和实例的用法基本相同,比如:旋转动作(CCRotateTo、CCRotateBy)、跳跃动作(CCJumpTo、CCJumpBy)、贝塞尔曲线动作(CCBezierTo、CCBezierBy)、淡入淡出动作(CCFadeIn、CCFadeOut)、闪烁动作(CCBlink)、色值渐变动作(CCTintTo、CCTintBy)等。