cocos2dx提供了丰富的动作实现的类。其中最主要的两个类是
CCAction和
CCActionManager,CCAction是所有动作的基类,类中有几个很重要的方法:
virtual void startWithTarget(CCNode *pTarget); //设置动作的目标virtual void stop(void); //停止动作virtual void step(float dt); //心跳,每一帧都会掉到,后面会介绍是怎么调用这个方法的virtual void update(float time); //更新动作,由step()调用类CCActionManager管理所有的动作;主要方法有:void addAction(CCAction *pAction, CCNode *pTarget, bool paused);这个方法会把一个CCAction对象交给CCActionManager管理,里面具体是用一个hashmap存起来的,而CCActionManager在CCDirector中会被当做一个singleton使用,每一帧都会去update;// CCDirector action manager m_pActionManager = new CCActionManager(); m_pScheduler->scheduleUpdateForTarget(m_pActionManager, kCCPrioritySystem, false);简单来做,就是CCDirector::drawScene() -> CCSchedule::update() -> CCActionManager::update() ->
CCAction::step() -> CCAction::update();下面介绍CCAction的分类架构:
(1)CCFiniteTimeAction : public CCAction: 表示这是一个线性的动画,新加了setDuration()//间隔和reverse()方法;(2)CCActionInterval : public CCFiniteTimeAction:这是一个延时动画,主要重写了step()方法;
(3)CCActionInstant : public CCFiniteTimeAction : 这是一个即时动画,主要重写tep()和update()方法;
(4)CCShow........一系列具体动作实现类,主要重写update后,在这个方法中进行具体操作。