cocos2d-x节点(CCActionGrid3D.h)API

时间:2022-10-20 23:35:15

本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-x节点(CCActionGrid3D.h)API

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记

透视、震动、水波、波纹....3D效果

///cocos2d-x-3.0alpha0/cocos2dx/actions
//透视、震动、水波、波纹....3D效果

#ifndef __ACTION_CCGRID3D_ACTION_H__
#define __ACTION_CCGRID3D_ACTION_H__

#include "CCActionGrid.h"

NS_CC_BEGIN

/**
 * @addtogroup actions
 * @{
 */

/** 
@brief Waves3D action 
*/
class CC_DLL Waves3D : public Grid3DAction
{
public:
    /** 使用 waves、amplitude(振幅)、 grid 的尺寸 、 duration 创建一个 action
     */
    static Waves3D* create(float duration, const Size& gridSize, unsigned int waves, float amplitude);

    /** returns the amplitude of the effect */
    inline float getAmplitude(void) const { return _amplitude; }
    /** sets the amplitude to the effect */
    inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }

    /** returns the amplitude rate */
    inline float getAmplitudeRate(void) const { return _amplitudeRate; }
    /** sets the ampliture rate */
    inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }

    /** 使用 waves、amplitude(振幅)、 grid 的尺寸 、 duration 初始化一个 action */
    bool initWithDuration(float duration, const Size& gridSize, unsigned int waves, float amplitude);

	// Overrides
	virtual Waves3D* clone() const override;
    virtual void update(float time) override;

protected:
    unsigned int _waves;
    float _amplitude;
    float _amplitudeRate;
};

/** @brief FlipX3D action */
class CC_DLL FlipX3D : public Grid3DAction
{
public:
    /** 使用 duration 创建一个 action */
    static FlipX3D* create(float duration);

    /** 使用 duration 初始化一个 action */
    bool initWithDuration(float duration);
    virtual bool initWithSize(const Size& gridSize, float duration);

    // Override
	virtual FlipX3D* clone() const override;
    virtual void update(float time) override;
};

/** @brief FlipY3D action */
class CC_DLL FlipY3D : public FlipX3D
{
public:
    /** creates the action with duration */
    static FlipY3D* create(float duration);

    // Overrides
    virtual void update(float time) override;
	virtual FlipY3D* clone() const override;
};

/** @brief Lens3D(透视) action */
class CC_DLL Lens3D : public Grid3DAction
{
public:
    /** 使用 中心位置、半径、 grid 的尺寸 、 duration 初始化一个 action 
    */
    static Lens3D* create(float duration, const Size& gridSize, const Point& position, float radius);

    /** Get 镜头中心位置 */
    inline float getLensEffect(void) const { return _lensEffect; }
    /** Set 镜头中心位置 */
    inline void setLensEffect(float fLensEffect) { _lensEffect = fLensEffect; }
    /** 设置是否是凹镜头 */
    inline void setConcave(bool bConcave) { _concave = bConcave; }
  
    inline const Point& getPosition(void) const { return _position; }
    void setPosition(const Point& position);

    /** 使用 中心位置、半径、 grid 的尺寸 、 duration 创建一个 action  */
    bool initWithDuration(float duration, const Size& gridSize, const Point& position, float radius);

    // Overrides
	virtual Lens3D* clone() const override;
    virtual void update(float time) override;

protected:
    /* 镜头中心位置 */
    Point _position;
    float _radius;
    /** 透镜效应. 默认为 0.7 - 0 意味着没有效果, 1 是非常强的影响 */
    float _lensEffect;
    /** 透镜是凹的. (true = concave(凹), false = convex(凸)) 默认是凸的 i.e. false */
    bool _concave;

    bool    _dirty;
};

/** @brief Ripple3D(波纹) action */
class CC_DLL Ripple3D : public Grid3DAction
{
public:
    /** 使用 半径、波的数目、amplitude(振幅)、 grid 的尺寸 、 duration 初始化一个 action */
    static Ripple3D* create(float duration, const Size& gridSize, const Point& position, float radius, unsigned int waves, float amplitude);

    /** get 中心位置 */
    inline const Point& getPosition(void) const { return _position; }
    /** set 中心位置 */
    void setPosition(const Point& position);

    inline float getAmplitude(void) const { return _amplitude; }
    inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }

    inline float getAmplitudeRate(void) const { return _amplitudeRate; }
    inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }

    /** 使用 半径、波的数目、amplitude(振幅)、 grid 的尺寸 、 duration 初始化一个 action */
    bool initWithDuration(float duration, const Size& gridSize, const Point& position, float radius, unsigned int waves, float amplitude);

    // Override
	virtual Ripple3D* clone() const override;
    virtual void update(float time) override;

protected:
    /* center position */
    Point _position;
    float _radius;
    unsigned int _waves;
    float _amplitude;
    float _amplitudeRate;
};

/** @brief Shaky3D action */
class CC_DLL Shaky3D : public Grid3DAction
{
public:
    /**使用一个 范围、震动 Z 顶点、grid、 druation 初始化一个 action  */
    static Shaky3D* create(float duration, const Size& gridSize, int range, bool shakeZ);

    /** 使用一个 范围、震动 Z 顶点、grid、 druation 初始化一个 action */
    bool initWithDuration(float duration, const Size& gridSize, int range, bool shakeZ);

    // Overrides
	virtual Shaky3D* clone() const override;
    virtual void update(float time) override;

protected:
    int _randrange;
    bool _shakeZ;
};

/** @brief Liquid(水波) action */
class CC_DLL Liquid : public Grid3DAction
{
public:
    /** 使用 amplitude(振幅)、持续时间 创建一个 action */
    static Liquid* create(float duration, const Size& gridSize, unsigned int waves, float amplitude);

    inline float getAmplitude(void) const { return _amplitude; }
    inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }

    inline float getAmplitudeRate(void) const { return _amplitudeRate; }
    inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }

    /** 使用 amplitude(振幅)、持续时间 初始化一个 action */
    bool initWithDuration(float duration, const Size& gridSize, unsigned int waves, float amplitude);

    // Overrides
	virtual Liquid* clone() const override;
    virtual void update(float time) override;

protected:
    unsigned int _waves;
    float _amplitude;
    float _amplitudeRate;
};

/** @brief Waves(波) action */
class CC_DLL Waves : public Grid3DAction
{
public:
    /** 使用 amplitude(振幅)、 横向/垂直 、grid 、持续时间 创建一个 action  */
    static Waves* create(float duration, const Size& gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical);

    inline float getAmplitude(void) const { return _amplitude; }
    inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }

    inline float getAmplitudeRate(void) const { return _amplitudeRate; }
    inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }

    /** 使用 amplitude(振幅)、 横向/垂直 、grid 、持续时间 初始化一个 action */
    bool initWithDuration(float duration, const Size& gridSize, unsigned int waves, float amplitude, bool horizontal, bool vertical);

    // Overrides
	virtual Waves* clone() const override;
    virtual void update(float time) override;

protected:
    unsigned int _waves;
    float _amplitude;
    float _amplitudeRate;
    bool _vertical;
    bool _horizontal;
};

/** @brief Twirl action */
class CC_DLL Twirl : public Grid3DAction
{
public:
    /** 使用 中心位置,twirls(萦绕)数,amplitude(振幅),网格的大小和持续时间 创建一个 action */
    static Twirl* create(float duration, const Size& gridSize, Point position, unsigned int twirls, float amplitude);

    /** get twirls(萦绕)中心 */
    inline const Point& getPosition(void) const { return _position; }
    /** set twirls(萦绕)中心 */
    void setPosition(const Point& position);

    inline float getAmplitude(void) const { return _amplitude; }
    inline void setAmplitude(float fAmplitude) { _amplitude = fAmplitude; }

    inline float getAmplitudeRate(void) const { return _amplitudeRate; }
    inline void setAmplitudeRate(float fAmplitudeRate) { _amplitudeRate = fAmplitudeRate; }

    /** 使用 中心位置,twirls(萦绕)数,振幅,网格的大小和持续时间 初始化一个 action  */
    bool initWithDuration(float duration, const Size& gridSize, Point position, unsigned int twirls, float amplitude);

    // Overrides
	virtual Twirl* clone() const override;
    virtual void update(float time) override;

protected:
    /* twirls(萦绕)中心 */
    Point _position;
    unsigned int _twirls;
    float _amplitude;
    float _amplitudeRate;
};

// end of actions group
/// @}

NS_CC_END

#endif // __ACTION_CCGRID3D_ACTION_H__