CCActionGird3D源码解析

来源:互联网 发布:matlab编程题 编辑:程序博客网 时间:2024/05/18 09:24

这个文件中都是一些3D网格动作。思维导图如下:


源码:

/** * @addtogroup actions * @{ *//** @brief Waves3D action.@details This action is used for take effect on the target node as 3D waves.        You can control the effect by these parameters:        duration, grid size, waves count, amplitude.*//// 3D波浪动作class CC_DLL Waves3D : public Grid3DAction{public:    /**    @brief Create an action with duration, grid size, waves and amplitude.    @param duration Specify the duration of the Waves3D action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param waves Specify the waves count of the Waves3D action.    @param amplitude Specify the amplitude of the Waves3D action.    @return If the creation sucess, return a pointer of Waves3D action; otherwise, return nil.    *//// 创建一个3D波浪动作/// duration 持续时间/// 网格尺寸/// 波浪的数量/// 波浪的振幅/// 如果成功创建的话,返回一个3D波浪的指针,否则,返回空    static Waves3D* create(float duration, const Size& gridSize, unsigned int waves, float amplitude);    /**    @brief Get the amplitude of the effect.    @return Return the amplitude of the effect.    *//// 得到3D波浪的振幅    inline float getAmplitude() const { return _amplitude; }    /**    @brief Set the amplitude to the effect.    @param amplitude The value of amplitude will be set.    *//// 设置3D波浪的振幅    inline void setAmplitude(float amplitude) { _amplitude = amplitude; }    /**    @brief Get the amplitude rate of the effect.    @return Return the amplitude rate of the effect.    *//// 得到振幅的频率    inline float getAmplitudeRate() const { return _amplitudeRate; }    /**    @brief Set the ampliture rate of the effect.    @param amplitudeRate The value of amplitude rate will be set.    *//// 设置振幅的频率    inline void setAmplitudeRate(float amplitudeRate) { _amplitudeRate = amplitudeRate; }// Overridesvirtual Waves3D* clone() const override;    virtual void update(float time) override;    CC_CONSTRUCTOR_ACCESS:    Waves3D() {}    virtual ~Waves3D() {}    /**     @brief Initializes an action with duration, grid size, waves and amplitude.    @param duration Specify the duration of the Waves3D action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param waves Specify the waves count of the Waves3D action.    @param amplitude Specify the amplitude of the Waves3D action.    @return If the initialization success, return true; otherwise, return false.    *//// 初始化3D波浪动作    bool initWithDuration(float duration, const Size& gridSize, unsigned int waves, float amplitude);protected:    unsigned int _waves;    float _amplitude;    float _amplitudeRate;private:    CC_DISALLOW_COPY_AND_ASSIGN(Waves3D);};/**@brief FlipX3D action.@details This action is used for flipping the target node on the x axis.*//// 水平3D翻转动作class CC_DLL FlipX3D : public Grid3DAction{public:    /**    @brief Create the action with duration.    @param duration Specify the duration of the FilpX3D action. It's a value in seconds.    @return If the creation sucess, return a pointer of FilpX3D action; otherwise, return nil.    *//// 传入持续时间创建这个动作    static FlipX3D* create(float duration);    // Overridevirtual FlipX3D* clone() const override;    virtual void update(float time) override;    CC_CONSTRUCTOR_ACCESS:    FlipX3D() {}    virtual ~FlipX3D() {}    /**     @brief Initializes an action with duration.    @param duration Specify the duration of the FlipX3D action. It's a value in seconds.    @return If the initialization success, return true; otherwise, return false.    *//// 初始化3D翻转动作,通过持续时间    bool initWithDuration(float duration);    /**     @brief Initializes an action with duration and grid size.    @param gridSize Specify the grid size of the FlipX3D action.    @param duration Specify the duration of the FlipX3D action. It's a value in seconds.    @return If the initialization success, return true; otherwise, return false.    *//// 通过网格尺寸和持续时间初始化3D翻转动作    virtual bool initWithSize(const Size& gridSize, float duration);private:    CC_DISALLOW_COPY_AND_ASSIGN(FlipX3D);};/**@brief FlipY3D action.@details This action is used for flipping the target node on the y axis.*//// 3D竖直翻转动作class CC_DLL FlipY3D : public FlipX3D{public:    /**    @brief Create the action with duration.    @param duration Specify the duration of the FlipY3D action. It's a value in seconds.    @return If the creation sucess, return a pointer of FlipY3D action; otherwise, return nil.    *//// 创建一个3D竖直翻转动作    static FlipY3D* create(float duration);    // Overrides    virtual void update(float time) override;virtual FlipY3D* clone() const override;CC_CONSTRUCTOR_ACCESS:    FlipY3D() {}    virtual ~FlipY3D() {}private:    CC_DISALLOW_COPY_AND_ASSIGN(FlipY3D);};/**@brief Lens3D action.@details This action is used for take effect on the target node as lens.        You can create the action by these parameters:        duration, grid size, center position of lens, radius of lens.        Also you can change the lens effect value & whether effect is concave by the setter methods.*//// 3D透镜动作///class CC_DLL Lens3D : public Grid3DAction{public:    /**    @brief Create the action with center position, radius, a grid size and duration.    @param duration Specify the duration of the Lens3D action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param position Specify the center position of the lens.    @param radius Specify the radius of the lens.    @return If the creation sucess, return a pointer of Lens3D action; otherwise, return nil.    *//// 产生一个3D透镜动作    static Lens3D* create(float duration, const Size& gridSize, const Vec2& position, float radius);    /**    @brief Get the value of lens effect. Default value is 0.7.    @return The value of lens effect.    *//// 得到lens_effect的值,默认值是0.7    inline float getLensEffect() const { return _lensEffect; }    /**    @brief Set the value of lens effect.    @param lensEffect The value of lens effect will be set.    *//// 设置lens_effect 的值    inline void setLensEffect(float lensEffect) { _lensEffect = lensEffect; }    /**    @brief Set whether lens is concave.    @param concave Whether lens is concave.    *//// 设置是否凹陷    inline void setConcave(bool concave) { _concave = concave; }    /**    @brief Get the center position of lens effect.    @return The center position of lens effect.    *//// 得到透镜效果的中心点的位置    inline const Vec2& getPosition() const { return _position; }    /**    @brief Set the center position of lens effect.    @param position The center position will be set.    *//// 设置透镜效果的中心点位置    void setPosition(const Vec2& position);    // Overridesvirtual Lens3D* clone() const override;    virtual void update(float time) override;    CC_CONSTRUCTOR_ACCESS:    Lens3D() {}    virtual ~Lens3D() {}    /**    @brief Initializes the action with center position, radius, grid size and duration.    @param duration Specify the duration of the Lens3D action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param position Specify the center position of the lens effect.    @param radius Specify the radius of the lens effect.    @return If the initialization success, return true; otherwise, return false.    *//// 初始化    bool initWithDuration(float duration, const Size& gridSize, const Vec2& position, float radius);protected:    /* lens center position */    Vec2 _position;    float _radius;    /** lens effect. Defaults to 0.7 - 0 means no effect, 1 is very strong effect *//// 透镜效果,默认值是0.7,0代表没有效果,1代表有非常明显的效果    float _lensEffect;    /** lens is concave. (true = concave, false = convex) default is convex i.e. false *//// 透镜是否是凹面的,true= 凹面,false= 凸面    bool _concave;    bool _dirty;private:    CC_DISALLOW_COPY_AND_ASSIGN(Lens3D);};/**@brief Ripple3D action.@details This action is used for take effect on the target node as ripple.        You can create the action by these parameters:        duration, grid size, center position of ripple,        radius of ripple, waves count, amplitude.*//// 3D波纹动作class CC_DLL Ripple3D : public Grid3DAction{public:    /**    @brief Create the action with center position, radius, number of waves, amplitude, a grid size and duration.    @param duration Specify the duration of the Ripple3D action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param position Specify the center position of the ripple effect.    @param radius Specify the radius of the ripple effect.    @param waves Specify the waves count of the ripple effect.    @param amplitude Specify the amplitude of the ripple effect.    @return If the creation sucess, return a pointer of Ripple3D action; otherwise, return nil.    *//// 产生一个3D波纹动作    static Ripple3D* create(float duration, const Size& gridSize, const Vec2& position, float radius, unsigned int waves, float amplitude);    /**    @brief Get the center position of ripple effect.    @return The center position of ripple effect.    *//// 得到波纹3D动作的中心点    inline const Vec2& getPosition() const { return _position; }    /**    @brief Set the center position of ripple effect.    @param position The center position of ripple effect will be set.    *//// 设置波纹3D动作的中心点    void setPosition(const Vec2& position);    /**    @brief Get the amplitude of ripple effect.    @return The amplitude of ripple effect.    *//// 得到波纹3D动作的振幅    inline float getAmplitude() const { return _amplitude; }    /**    @brief Set the amplitude of ripple effect.    @param fAmplitude The amplitude of ripple effect.    *//// 设置波纹3D动作的振幅    inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }    /**    @brief Get the amplitude rate of ripple effect.    @return The amplitude rate of ripple effect.    *//// 得到波纹3D动作多的频率    inline float getAmplitudeRate() const { return _amplitudeRate; }    /**    @brief Set the amplitude rate of ripple effect.    @param fAmplitudeRate The amplitude rate of ripple effect.    *//// 设置波纹3D动作的频率    inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }    // Overridevirtual Ripple3D* clone() const override;    virtual void update(float time) override;CC_CONSTRUCTOR_ACCESS:    Ripple3D() {}    virtual ~Ripple3D() {}    /**    @brief Initializes the action with center position, radius, number of waves, amplitude, a grid size and duration.    @param duration Specify the duration of the Ripple3D action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param position Specify the center position of the ripple effect.    @param radius Specify the radius of the ripple effect.    @param waves Specify the waves count of the ripple effect.    @param amplitude Specify the amplitude of the ripple effect.    @return If the initialization success, return true; otherwise, return false.     */ /// 初始化波纹3D动作    bool initWithDuration(float duration, const Size& gridSize, const Vec2& position, float radius, unsigned int waves, float amplitude);protected:    /* center position */    Vec2 _position;    float _radius;    unsigned int _waves;    float _amplitude;    float _amplitudeRate;private:    CC_DISALLOW_COPY_AND_ASSIGN(Ripple3D);};/**@brief Shaky3D action.@details This action is used for take effect on the target node as shaky.        You can create the action by these parameters:        duration, grid size, range, whether shake on the z axis.*//// 震动3D动作/// 这个动作用来使一个节点产生震动效果/// 可以通过以下的参数创建一个震动动作:持续时间,网格尺寸,震动范围,是否在Z轴上震动class CC_DLL Shaky3D : public Grid3DAction{public:    /**     @brief Create the action with a range, shake Z vertices, a grid and duration.    @param initWithDuration Specify the duration of the Shaky3D action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param range Specify the range of the shaky effect.    @param shakeZ Specify whether shake on the z axis.    @return If the creation sucess, return a pointer of Shaky3D action; otherwise, return nil.    *//// 创建一个震动3D动作    static Shaky3D* create(float initWithDuration, const Size& gridSize, int range, bool shakeZ);    // Overridesvirtual Shaky3D* clone() const override;    virtual void update(float time) override;    CC_CONSTRUCTOR_ACCESS:    Shaky3D() {}    virtual ~Shaky3D() {}        /**     @brief Initializes the action with a range, shake Z vertices, grid size and duration.    @param duration Specify the duration of the Shaky3D action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param range Specify the range of the shaky effect.    @param shakeZ Specify whether shake on the z axis.    @return If the Initialization sucess, return true; otherwise, return false.    *//// 初始化震动3D动作    bool initWithDuration(float duration, const Size& gridSize, int range, bool shakeZ);protected:    int _randrange;    bool _shakeZ;private:    CC_DISALLOW_COPY_AND_ASSIGN(Shaky3D);};/**@brief Liquid action.@details This action is used for take effect on the target node as liquid.        You can create the action by these parameters:        duration, grid size, waves count, amplitude of the liquid effect.*//// 液体动作/// 这个动作使一个节点产生液体的效果class CC_DLL Liquid : public Grid3DAction{public:    /**    @brief Create the action with amplitude, grid size, waves count and duration.    @param duration Specify the duration of the Liquid action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param waves Specify the waves count of the Liquid action.    @param amplitude Specify the amplitude of the Liquid action.    @return If the creation sucess, return a pointer of Liquid action; otherwise, return nil.    *//// 创建一个液体动作/// duartion 持续时间/// gridSize 网格的尺寸/// waves 动作中波浪的个数/// amplitude 动作的振幅    static Liquid* create(float duration, const Size& gridSize, unsigned int waves, float amplitude);    /**    @brief Get the amplitude of the effect.    @return Return the amplitude of the effect.    *//// 得到动作的振幅    inline float getAmplitude() const { return _amplitude; }    /**    @brief Set the amplitude to the effect.    @param amplitude The value of amplitude will be set.    *//// 设置动作的振幅    inline void setAmplitude(float amplitude) { _amplitude = amplitude; }    /**    @brief Get the amplitude rate of the effect.    @return Return the amplitude rate of the effect.    *//// 得到震动的频率    inline float getAmplitudeRate() const { return _amplitudeRate; }    /**    @brief Set the ampliture rate of the effect.    @param amplitudeRate The value of amplitude rate will be set.    *//// 设置震动的频率    inline void setAmplitudeRate(float amplitudeRate) { _amplitudeRate = amplitudeRate; }    // Overridesvirtual Liquid* clone() const override;    virtual void update(float time) override;    CC_CONSTRUCTOR_ACCESS:    Liquid() {}    virtual ~Liquid() {}        /**    @brief Initializes the action with amplitude, grid size, waves count and duration.    @param duration Specify the duration of the Liquid action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param waves Specify the waves count of the Liquid action.    @param amplitude Specify the amplitude of the Liquid action.    @return If the initialization sucess, return true; otherwise, return false.    *//// 初始化    bool initWithDuration(float duration, const Size& gridSize, unsigned int waves, float amplitude);protected:    unsigned int _waves;    float _amplitude;    float _amplitudeRate;private:    CC_DISALLOW_COPY_AND_ASSIGN(Liquid);};/**@brief Waves action.@details This action is used for take effect on the target node as waves.        You can control the effect by these parameters:        duration, grid size, waves count, amplitude,        whether waves on horizontal and whether waves on vertical.*//// 波浪/// 这个动作是一个节点产生波浪效果/// 你可以通过以下参数控制这个效果:/// 持续时间,网格尺寸,波浪数量,振幅,波浪是水平方向还是竖直方向class CC_DLL Waves : public Grid3DAction{public:    /**    @brief Create the action with amplitude, horizontal sin, vertical sin, grid size, waves count and duration.    @param duration Specify the duration of the Waves action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param waves Specify the waves count of the Waves action.    @param amplitude Specify the amplitude of the Waves action.    @param horizontal Specify whether waves on horizontal.    @param vertical Specify whether waves on vertical.    @return If the creation sucess, return a pointer of Waves action; otherwise, return nil.    *//// 创建一个波浪动作/// duration 持续时间/// gridSize 网格尺寸/// waves 波浪数量 /// amplitude 振幅/// horizontal 水平方向是否有波浪/// vertical 竖直方向是否有波浪    static Waves* create(float duration, const Size& gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical);    /**    @brief Get the amplitude of the effect.    @return Return the amplitude of the effect.    *//// 得到动作的振幅    inline float getAmplitude() const { return _amplitude; }    /**    @brief Set the amplitude to the effect.    @param amplitude The value of amplitude will be set.    *//// 设置动作的振幅    inline void setAmplitude(float amplitude) { _amplitude = amplitude; }    /**    @brief Get the amplitude rate of the effect.    @return Return the amplitude rate of the effect.    *//// 得到振幅的频率    inline float getAmplitudeRate() const { return _amplitudeRate; }    /**    @brief Set the ampliture rate of the effect.    @param amplitudeRate The value of amplitude rate will be set.    *//// 设置振幅的频率    inline void setAmplitudeRate(float amplitudeRate) { _amplitudeRate = amplitudeRate; }    // Overridesvirtual Waves* clone() const override;    virtual void update(float time) override;    CC_CONSTRUCTOR_ACCESS:    Waves() {}    virtual ~Waves() {}        /**    @brief Initializes the action with amplitude, horizontal sin, vertical sin, grid size, waves count and duration.    @param duration Specify the duration of the Waves action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param waves Specify the waves count of the Waves action.    @param amplitude Specify the amplitude of the Waves action.    @param horizontal Specify whether waves on horizontal.    @param vertical Specify whether waves on vertical.    @return If the initialization sucess, return true; otherwise, return false.    *//// 初始化动作    bool initWithDuration(float duration, const Size& gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical);protected:    unsigned int _waves;    float _amplitude;    float _amplitudeRate;    bool _vertical;    bool _horizontal;private:    CC_DISALLOW_COPY_AND_ASSIGN(Waves);};/**@brief Twirl action.@details This action is used for take effect on the target node as twirl.        You can control the effect by these parameters:        duration, grid size, center position, twirls count, amplitude.*//// 扭曲动作/// 这个动作是在一个节点上产生扭曲效果/// 你可以通过控制以下参数,控制效果:持续时间,网格尺寸,中心位置,扭曲数量,振幅class CC_DLL Twirl : public Grid3DAction{public:    /**    @brief Create the action with center position, number of twirls, amplitude, a grid size and duration.    @param duration Specify the duration of the Twirl action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param position Specify the center position of the twirl action.    @param twirls Specify the twirls count of the Twirl action.    @param amplitude Specify the amplitude of the Twirl action.    @return If the creation sucess, return a pointer of Twirl action; otherwise, return nil.    *//// 创建一个扭曲动作    static Twirl* create(float duration, const Size& gridSize, Vec2 position, unsigned int twirls, float amplitude);    /**    @brief Get the center position of twirl action.    @return The center position of twirl action.    *//// 得到动作的中心位置    inline const Vec2& getPosition() const { return _position; }    /**    @brief Set the center position of twirl action.    @param position The center position of twirl action will be set.    */    /// 设置动作的中心位置void setPosition(const Vec2& position);    /**    @brief Get the amplitude of the effect.    @return Return the amplitude of the effect.    *//// 得到动作的振幅    inline float getAmplitude() const { return _amplitude; }    /**    @brief Set the amplitude to the effect.    @param amplitude The value of amplitude will be set.    *//// 设置动作的振幅    inline void setAmplitude(float amplitude) { _amplitude = amplitude; }    /**    @brief Get the amplitude rate of the effect.    @return Return the amplitude rate of the effect.    *//// 得到振幅的频率    inline float getAmplitudeRate() const { return _amplitudeRate; }    /**    @brief Set the ampliture rate of the effect.    @param amplitudeRate The value of amplitude rate will be set.    *//// 设置振幅的频率    inline void setAmplitudeRate(float amplitudeRate) { _amplitudeRate = amplitudeRate; }    // Overridesvirtual Twirl* clone() const override;    virtual void update(float time) override;    CC_CONSTRUCTOR_ACCESS:    Twirl() {}    virtual ~Twirl() {}    /**    @brief Initializes the action with center position, number of twirls, amplitude, a grid size and duration.    @param duration Specify the duration of the Twirl action. It's a value in seconds.    @param gridSize Specify the size of the grid.    @param position Specify the center position of the twirl action.    @param twirls Specify the twirls count of the Twirl action.    @param amplitude Specify the amplitude of the Twirl action.    @return If the initialization sucess, return true; otherwise, return false.    *//// 初始化动作    bool initWithDuration(float duration, const Size& gridSize, Vec2 position, unsigned int twirls, float amplitude);protected:    /* twirl center */    Vec2 _position;    unsigned int _twirls;    float _amplitude;    float _amplitudeRate;private:    CC_DISALLOW_COPY_AND_ASSIGN(Twirl);};// end of actions group/// @}


0 0
原创粉丝点击