本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(CCProgressTimer.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
进度条定时器
///cocos2d-x-3.0alpha0/cocos2dx/misc_nodes
//进度条定时器
#ifndef __MISC_NODE_CCPROGRESS_TIMER_H__
#define __MISC_NODE_CCPROGRESS_TIMER_H__
#include "sprite_nodes/CCSprite.h"
#ifdef EMSCRIPTEN
#include "base_nodes/CCGLBufferedNode.h"
#endif // EMSCRIPTEN
NS_CC_BEGIN
/**
* @addtogroup misc_nodes
* @{
*/
/**
@brief ProgressTimer 是 Node 的子类.
它根据百分比在内部渲染 sprite
这个进度条可以 水平/垂直 Radial(径向,光线状的,放射的)
@since v0.99.1
*/
class CC_DLL ProgressTimer : public NodeRGBA
#ifdef EMSCRIPTEN
, public GLBufferedNode
#endif // EMSCRIPTEN
{
public:
/** Types of progress
@since v0.99.1
*/
enum class Type
{
/// Radial Counter-Clockwise(逆时针)
RADIAL,
/// Bar
BAR,
};
/** 使用 sprite 创建一个进度条定时器,定时经过精灵的形状 */
static ProgressTimer* create(Sprite* sp);
/**
* @js ctor
*/
ProgressTimer();
/**
* @js NA
* @lua NA
*/
virtual ~ProgressTimer();
/** 使用 sprite 初始化一个进度条定时器,定时经过精灵的形状 */
bool initWithSprite(Sprite* sp);
/** 改变百分比来改变进度. */
inline Type getType() const { return _type; }
/** Percentages(百分数) are from 0 to 100 */
inline float getPercentage() const {return _percentage; }
/** 使用图片来显示百分比进度, retain */
inline Sprite* getSprite() const { return _sprite; }
void setPercentage(float fPercentage);
void setSprite(Sprite *pSprite);
void setType(Type type);
/**
* @js setReverseDirection
* @lua setReverseDirection
*/
void setReverseProgress(bool reverse);
inline bool isReverseDirection() { return _reverseDirection; };
inline void setReverseDirection(bool value) { _reverseDirection = value; };
/**
* Midpoint 是用来修改进度条的起始位置.
* 如果你实用哦了 radials 类型, midpoint 可以改变中心点
* 如果你使用的是 bar 类型,midpoint 可以改变 bar 的增长
* 它从 center 扩展而来,但是也拥有 Sprite 的边缘。所以:
* 你希望从左到右,所有的类型都可以设置 midpoint 为 Point(0,y)
* 你希望从右到左,所有的类型都可以设置 midpoint 为 Point(1,y)
* 你希望从底部到上部,所有的类型都可以设置 midpoint 为 Point(x,0)
* 你希望从上部到底部,所有的类型都可以设置 midpoint 为 Point(x,1)
*/
void setMidpoint(const Point& point);
/** Returns the Midpoint */
Point getMidpoint() const;
/**
* 允许 bar 类型使用特定的速率来移动
* 将 component(设备)设置为 0 ,以确保它保持在 100%.
* 例如,你想有一个从左到右的 bar 但是没有把高度保持在 100%
* 把速率设置为点 Point(0,1); 设置 midpoint(中点)为 = Point(0,.5f);
*/
inline void setBarChangeRate(const Point& barChangeRate ) { _barChangeRate = barChangeRate; }
/** Returns the BarChangeRate (Bar 改变率)*/
inline Point getBarChangeRate() const { return _barChangeRate; }
// Overrides
virtual void draw(void) override;
void setAnchorPoint(const Point& anchorPoint) override;
virtual void setColor(const Color3B& color) override;
virtual const Color3B& getColor() const override;
virtual GLubyte getOpacity() const override;
virtual void setOpacity(GLubyte opacity) override;
protected:
Tex2F textureCoordFromAlphaPoint(Point alpha);
Vertex2F vertexFromAlphaPoint(Point alpha);
void updateProgress(void);
void updateBar(void);
void updateRadial(void);
void updateColor(void);
Point boundaryTexCoord(char index);
Type _type;
Point _midpoint;
Point _barChangeRate;
float _percentage;
Sprite *_sprite;
int _vertexDataCount;
V2F_C4B_T2F *_vertexData;
bool _reverseDirection;
};
// end of misc_nodes group
/// @}
NS_CC_END
#endif //__MISC_NODE_CCPROGRESS_TIMER_H__