Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Cocos2d-x结构学习(十二)CCMoveBy、CCActionInterval、CCFiniteTimeAction、CCCallFunc、CC_SAFE_RETAIN、CCActionInst大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

1、CCMoveBy:移动动作,继承自CCActionInterval

class CC_DLL CCMoveBy : public CCActionInterval
{
public:
    bool initWithDuration(float duration,const cCPoint& deltaPosition);   //初始化序列
    virtual CCObject* copyWithZone(CCZone* pZonE);
    virtual void startWithTarget(CCNode *pTarget);               //开始目标
    virtual CCActionInterval* reverse(void);                    
    virtual void update(float timE);                         //更新

public:
    static CCMoveBy* create(float duration,const cCPoint& deltaPosition);
protected:
    CCPoint m_positionDelta;
    CCPoint m_startPosition;
    CCPoint m_previousPosition;
};
2、CCActionInterval:动作间隔类,继承自CCFiniteTimeAction
class CC_DLL CCActionInterval : public CCFiniteTimeAction
{
public:
    inline float getElapsed(void) { return m_elapsed; }       //获取从动作开始到目前已逝去的秒

    bool initWithDuration(float d);                         //初始化动作

    virtual bool isDone(void);                        //判断动作是否运行完成

    virtual CCObject* copyWithZone(CCZone* pZonE);
    virtual void step(float dt);
    virtual void startWithTarget(CCNode *pTarget);
    /** returns a reversed action */
    virtual CCActionInterval* reverse(void);

public:
    static CCActionInterval* create(float d);

public:
    void setAmplitudeRate(float amp);    //设置和获得扩展
    float getAmplitudeRate(void);
protected:
    float m_elapsed;
    bool   m_bFirstTick;
};
3、CCFiniteTimeAction:有限时间动作,继承自CCAction
class CC_DLL CCFiniteTimeAction : public CCAction
{
public:
    CCFiniteTimeAction()
        : m_fDuration(0)
    {}
    virtual ~CCFiniteTimeAction(){}

    inline float getDuration(void) { return m_fDuration; }                         //设置和获得持续时间
    inline void setDuration(float duration) { m_fDuration = duration; }

    virtual CCFiniteTimeAction* reverse(void);           //返回一个倒退序列
protected:
    float m_fDuration;
};
4、CCCallFunc:动作回调函数处理类,继承自CCActionInstant
class CC_DLL CCCallFunc : public CCActionInstant
{
public:
    CCCallFunc()
        : m_pSELEctorTarget(NULL),m_nScriptHandler(0),m_pCallFunc(NULL)
    {
    }
    virtual ~CCCallFunc();

    static CCCallFunc * create(CCObject* pSELEctorTarget,SEL_CallFunc SELEctor);       //创建和初始化相关函数
    static CCCallFunc * create(int nHandler);
    virtual bool initWithTarget(CCObject* pSELEctorTarget);
    virtual void execute();                      //执行

    virtual void update(float timE);            //更新
  
    CCObject * copyWithZone(CCZone *pZonE);
    inline CCObject* getTargetCallBACk()     //设置和获得回调对象
    {
        return m_pSELEctorTarget;
    }
    inline void setTargetCallBACk(CCObject* pSel)
    {
        if (pSel != m_pSELEctorTarget)
        {
            CC_SAFE_RETAIN(pSel);
            CC_SAFE_RELEASE(m_pSELEctorTarget);
            m_pSELEctorTarget = pSel; 
        }
    }

    inlinE int getScriptHandler() { return m_nScriptHandler; };            //得到脚本句柄
protected:
    CCObject*   m_pSELEctorTarget;

    int m_nScriptHandler;

    union
    {
        SEL_CallFunc    m_pCallFunc;
        SEL_CallFuncN    m_pCallFuncN;
        SEL_CallFuncND    m_pCallFuncND;
        SEL_CallFuncO   m_pCallFuncO;
    };
};
5、CC_SAFE_RETAIN:这个宏有意思,搞个一次循环
#define CC_SAFE_RETAIN(p)            do { if(p) { (p)->retain(); } } while(0)
6、CCActionInstant:立即动作类,继承自CCFiniteTimeAction,比较简陋
class CC_DLL CCActionInstant : public CCFiniteTimeAction
{
public:
    CCActionInstant();
    virtual ~CCActionInstant(){}
    
    virtual CCObject* copyWithZone(CCZone *pZonE);
    virtual bool isDone(void);
    virtual void step(float dt);
    virtual void update(float timE);
    virtual CCFiniteTimeAction * reverse(void);
};

大佬总结

以上是大佬教程为你收集整理的Cocos2d-x结构学习(十二)CCMoveBy、CCActionInterval、CCFiniteTimeAction、CCCallFunc、CC_SAFE_RETAIN、CCActionInst全部内容,希望文章能够帮你解决Cocos2d-x结构学习(十二)CCMoveBy、CCActionInterval、CCFiniteTimeAction、CCCallFunc、CC_SAFE_RETAIN、CCActionInst所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。