CCAction類

class CC_DLL CCAction : public CCObject 
{
public:

    CCAction(void);
    virtual ~CCAction(void);
    const char* description();
    // 用於動作拷貝
    virtual CCObject* copyWithZone(CCZone *pZone);

    // 查詢動作是否已做完
    virtual bool isDone(void);

   // 動作調用之前調用
    virtual void startWithTarget(CCNode *pTarget);

    // 動作完成後調用
    virtual void stop(void);

    // 每幀都會調用
    virtual void step(float dt);

    // 每幀調用來更新動作
    virtual void update(float time);
    // 獲取Target節點
    inline CCNode* getTarget(void) { return m_pTarget; }
    inline void setTarget(CCNode *pTarget) { m_pTarget = pTarget; }
    
    inline CCNode* getOriginalTarget(void) { return m_pOriginalTarget; } 
    inline void setOriginalTarget(CCNode *pOriginalTarget) { m_pOriginalTarget = pOriginalTarget; }
    // 設置、獲取tag值
    inline int getTag(void) { return m_nTag; }
    inline void setTag(int nTag) { m_nTag = nTag; }

    // 創建動作對象
    static CCAction* create();
};


 // 有限時間的動作對象
class CC_DLL CCFiniteTimeAction : public CCAction
{
public:

    CCFiniteTimeAction();
    virtual ~CCFiniteTimeAction();
    // 獲取、設置動作的持續時間
    inline float getDuration(void) { return m_fDuration; }
    inline void setDuration(float duration) { m_fDuration = duration; }

    // 取該動作對象的逆序
    virtual CCFiniteTimeAction* reverse(void);
};

class CCActionInterval;
class CCRepeatForever;

 // 改變動作對象的速度,Useful to simulate 'slow motion' or 'fast forward' effect.
class CC_DLL CCSpeed : public CCAction
{
public:

    CCSpeed();
    virtual ~CCSpeed(void);

    // 設置、獲取速度,alter the speed of the inner function in runtime
    inline float getSpeed(void) { return m_fSpeed; }
    inline void setSpeed(float fSpeed) { m_fSpeed = fSpeed; }
    // 初始化動作對象
    bool initWithAction(CCActionInterval *pAction, float fSpeed);
    // 繼承父類函數
    virtual CCObject* copyWithZone(CCZone *pZone);
    virtual void startWithTarget(CCNode* pTarget);
    virtual void stop();
    virtual void step(float dt);
    virtual bool isDone(void);
    virtual CCActionInterval* reverse(void);
    // 設置內部動作對象
    void setInnerAction(CCActionInterval *pAction);
    inline CCActionInterval* getInnerAction();
    // 創建該動作
    static CCSpeed* create(CCActionInterval* pAction, float fSpeed);
protected:
    float m_fSpeed;
    CCActionInterval *m_pInnerAction;
};

// 跟隨節點的動作對象
class CC_DLL CCFollow : public CCAction
{
public:

    CCFollow();
    virtual ~CCFollow(void);
    
    // 開啓、關閉邊界
    inline bool isBoundarySet(void) { return m_bBoundarySet; }
    inline void setBoudarySet(bool bValue) { m_bBoundarySet = bValue; }

    // 初始化對象
    bool initWithTarget(CCNode *pFollowedNode, const CCRect& rect = CCRectZero);
    // 繼承父類函數
    virtual CCObject* copyWithZone(CCZone *pZone);
    virtual void step(float dt);
    virtual bool isDone(void);
    virtual void stop(void);

    // 創建跟隨動作對象
    static CCFollow* create(CCNode *pFollowedNode, const CCRect& rect = CCRectZero);
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章