Cocos2d的action系统

1.继承关系图:



动作类的基类是CCAction,任何一种行为都是由它拓展衍变而来的。动作类可以分为四大类:有限次动作类、无限重复动作类、速度动作类和跟随动作类,其中前两者的使用频率最高;而有限次动作类又可以分为瞬时动作类和延时动作类。( 新版本中无限重复动作类(CCRepeatForever)是延时动作派生出来的)

CCFiniteTimeAction从字面就能看出来(finite = 有限的),是有限次动作类,它是最为普通的行为,就是按时间顺序做一系列事情,做完后行为结束;CCRepeatForever的名字更易懂了,无限重复动作类,就是说它可以让节点反复的做一件事,除非把行为或节点删除,否则永远不会停止;CCSpeed的作用是调整行为实例的执行速度,因此它依赖于其它的动作,单独的CCSpeed没有意义;CCFollow可以使节点跟随指定的另一个节点移动。

2.CCBezierBy  使节点按贝塞尔曲线运动。

CCBezierBy* CCBezierBy::create(float t, const ccBezierConfig& c),ccBezierConfig是一个结构体:

typedef struct _ccBezierConfig {
    //! end position of the bezier
    CCPoint endPosition;
    //! Bezier control point 1
    CCPoint controlPoint_1;
    //! Bezier control point 2
    CCPoint controlPoint_2;
} ccBezierConfig;

CGPoint endPosition  曲线的终点坐标(相对于起点的偏移量,非绝对坐标),图中的P3

CGPoint controlPoint_1 曲线第一个弧度的参考点坐标(相对于起点的偏移量,非绝对坐标),图中的P1

CGPoint controlPoint_2曲线第二个弧度的参考点坐标(相对于起点的偏移量,非绝对坐标),图中的P2

Cocos2d的action系统


3.样例:

创建并开始动作:

CCActionInterval *actionto = CCMoveTo::create(fSecond,CCPointMake(x,y));
actionto->setTag(TAG_ACTION_BGCAR_MOVE);
pBgCar->runAction(actionto);//pBgCar是使用这个动作的sprite,runAction是ccnode的方法


//停止动作

pBgCar->stopAction(pBgCar->getActionByTag(iTag));


你可能感兴趣的:(cocos2d)