Cocos2d-X中使用ProgressTimer实现一些简单的效果

来源:互联网 发布:淘宝阿尔法软件 编辑:程序博客网 时间:2024/05/21 10:07

我在上一篇博客中介绍了ProgressTimer的用法,这篇博客决定写一些使用Progress实现一些简单的效果,

程序实例:ProgressTimer实现效果1

首先在工程目录下的Resource文件夹中添加两张图片

       

然后定义一个Progress类

在Progress.h中添加下面的代码

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #ifndef _Progress_H_  
  2. #define _Progress_H_  
  3.   
  4. #include "cocos2d.h"  
  5. USING_NS_CC;  
  6.   
  7. class Progress : public CCLayer  
  8. {  
  9. public:  
  10.     static CCScene* scene();  
  11.   
  12.     bool init();  
  13.   
  14.     CREATE_FUNC(Progress);  
  15.   
  16.     void scheduleFunc(float dt);  
  17. };  
  18.   
  19. #endif  

在Progress.cpp中添加下面代码

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #include "Progress.h"  
  2.   
  3.   
  4. CCScene* Progress::scene()  
  5. {  
  6.     CCScene* scene = CCScene::create();  
  7.   
  8.     Progress* layer = Progress::create();  
  9.   
  10.     scene->addChild(layer);  
  11.   
  12.     return scene;  
  13. }  
  14.   
  15. bool Progress::init()  
  16. {  
  17.     CCLayer::init();  
  18.   
  19.     CCSize winSize = CCDirector::sharedDirector()->getWinSize();  
  20.   
  21.     CCPoint center = ccp(winSize.width / 2, winSize.height / 2);  
  22.   
  23.     CCSprite* bg = CCSprite::create("2.png");  
  24.     CCSprite* sprite = CCSprite::create("1.png");  
  25.   
  26.     bg->setPosition(center);  
  27.   
  28.     addChild(bg);  
  29.   
  30.     CCProgressTimer* progress = CCProgressTimer::create(sprite);  
  31.   
  32.     progress->setPosition(center);  
  33.   
  34.     addChild(progress);  
  35.   
  36.     //设置进度条的模式  
  37.     //kCCProgressTimerTypeBar表示条形模式  
  38.     progress->setType(kCCProgressTimerTypeBar);  
  39.   
  40.     //设置进度条变化的方向  
  41.     //ccp(0,1)表示沿着y轴变化  
  42.     progress->setBarChangeRate(ccp(0,1));  
  43.   
  44.     //设置进度条的起始位置  
  45.     //ccp(0,0)表示下面  
  46.     progress->setMidpoint(ccp(0,0));  
  47.   
  48.     //设置进度条的ID  
  49.     progress->setTag(100);  
  50.   
  51.     //创建一个定时器  
  52.     schedule(schedule_selector(Progress::scheduleFunc), 0.1f);  
  53.   
  54.     return true;  
  55. }  
  56.   
  57. void Progress::scheduleFunc(float dt)  
  58. {  
  59.     //通过进度条的ID得到进度条  
  60.     CCProgressTimer* progress = (CCProgressTimer*)getChildByTag(100);  
  61.   
  62.    //设置progress的进度,每调用一次进度加一  
  63.     progress->setPercentage(progress->getPercentage() + 1);  
  64.       
  65.      //当进度大于或者等于100时  
  66.     if(progress->getPercentage() >= 100)  
  67.     {  
  68.           //终止定时器  
  69.         unscheduleAllSelectors();  
  70.     }  
  71. }  

执行结果:



程序实例:ProgressTimer实现效果1

首先在工程目录下的Resource文件夹中添加两张图片





在Progress.cpp中添加下面的代码

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #include "Progress.h"  
  2.   
  3.   
  4. CCScene* Progress::scene()  
  5. {  
  6.     CCScene* scene = CCScene::create();  
  7.   
  8.     Progress* layer = Progress::create();  
  9.   
  10.     scene->addChild(layer);  
  11.   
  12.     return scene;  
  13. }  
  14.   
  15. bool Progress::init()  
  16. {  
  17.     CCLayer::init();  
  18.       
  19.     //设置背景颜色为白色  
  20.     CCLayerColor* layer = CCLayerColor::create(ccc4(255, 255, 255, 255));     
  21.     addChild(layer);      
  22.   
  23.   
  24.     CCSize winSize = CCDirector::sharedDirector()->getWinSize();  
  25.   
  26.     CCPoint center = ccp(winSize.width / 2, winSize.height / 2);  
  27.   
  28.     CCSprite* bg = CCSprite::create("4.png");  
  29.     CCSprite* sprite = CCSprite::create("3.png");  
  30.   
  31.     bg->setPosition(center);  
  32.   
  33.     addChild(bg);  
  34.   
  35.     CCProgressTimer* progress = CCProgressTimer::create(sprite);  
  36.   
  37.     progress->setPosition(center);  
  38.   
  39.     addChild(progress);  
  40.   
  41.     //设置进度条的ID  
  42.     progress->setTag(100);  
  43.   
  44.     //创建一个定时器  
  45.     schedule(schedule_selector(Progress::scheduleFunc), 0.1f);  
  46.   
  47.     return true;  
  48. }  
  49.   
  50. void Progress::scheduleFunc(float dt)  
  51. {  
  52.     //通过进度条的ID得到进度条  
  53.     CCProgressTimer* progress = (CCProgressTimer*)getChildByTag(100);  
  54.   
  55.    //设置progress的进度,每调用一次进度加一  
  56.     progress->setPercentage(progress->getPercentage() + 1);  
  57.       
  58.      //当进度大于或者等于100时  
  59.     if(progress->getPercentage() >= 100)  
  60.     {  
  61.           //终止定时器  
  62.         unscheduleAllSelectors();  
  63.     }  
  64. }  


执行结果:



0 0
原创粉丝点击