CCProgressTimer,建立使用这个节点能够大体实现两个做用的效果:this
其一:在游戏中几乎大部分的游戏启动界面都是游戏加载画面,那么用到的通常是进度条提示加载进度,其使用的就是CCProgressTimer。spa
其二:在游戏中须要对精灵的出现等动做制做一些渐显的效果。.net
(1)类型通常就是两种:component
- typedef enum {
-
- kCCProgressTimerTypeRadial,
-
- kCCProgressTimerTypeBar,
- } CCProgressTimerType;
(2)类型1:radial(环形)blog
- CCSize wSize = CCDirector::sharedDirector()->getWinSize();
- progressTimer = CCProgressTimer::create(CCSprite::create("progress.gif"));
- progressTimer->setType(kCCProgressTimerTypeRadial);
-
-
- progressTimer->setReverseProgress(true);
- progressTimer->setPosition(wSize.width/2,wSize.height/2);
- this->addChild(progressTimer);
(3)类型2:bar (条形:包括vertical 和 horizontal)
渐变的方向问题:游戏
vertical竖直方法包括从上到下和从下到上;ip
horizontal水平方向包括从左到右和从右到左。ci
这里涉及到两个设置参数:get
首先是setMidpoint设置起点string
其次是setBarChangeRate设置变化rate
若是不用变化的方向,则设置该方向为0,不然设置为1。
- CCSize wSize = CCDirector::sharedDirector()->getWinSize();
- progressTimer = CCProgressTimer::create(CCSprite::create("progress.gif"));
- progressTimer->setType(kCCProgressTimerTypeBar);
-
-
- progressTimer->setMidpoint(ccp(0, 0.5));
- progressTimer->setBarChangeRate(ccp(1, 0));
-
-
-
-
-
-
-
-
-
-
-
-
-
- progressTimer->setPosition(wSize.width/2,wSize.height/2);
- this->addChild(progressTimer);
(4) 执行变化
①、若是是要实现精灵渐变的显示效果:
建立CCProgressTo或者是CCProgressFromTo动做,让CCProgressTimer执行。
CCProgressTo和CCProgressFromTo的区别是:
前者:Progress to percentage(初始化有两个参数)(float duration, float fPercent)
后者:Progress from a percentage to another percentage(初始化有三个参数)(float duration, float fFromPercentage, float fToPercentage)
- CCProgressTo *progressTo = CCProgressTo::create(2.0, 100);
-
-
- progressTimer->runAction(CCRepeatForever::create(progressTo));
②、若是是要实现加载进度条的效果:
须要重载update方法,在这个方法中实现进度条percentage的变化。
- void HelloWorld::update(float dt)
- {
- float percentage = progressTimer->getPercentage();
-
- if (percentage < 100) {
- percentage += 1;
- progressTimer->setPercentage(percentage);
- }
- }
关于CCProgressTimer的更加详细的使用 demo能够参看引擎中sample中的ActionProgressTest。