这个文件中都是一些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; }
// Overrides
virtual 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);
// Override
virtual 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);
// Overrides
virtual 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; }
// Override
virtual 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);
// Overrides
virtual 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; }
// Overrides
virtual 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; }
// Overrides
virtual 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; }
// Overrides
virtual 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
/// @}