当前位置 : 主页 > 手机开发 > 其它 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-13
我在上一篇博客中介绍了ProgressTimer的用法,这篇博客决定写一些使用Progress实现一些简单的效果, 程序实例:ProgressTimer实现效果1 首先在工程目录下的Resource文件夹中添加两张图片 然后

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

程序实例:ProgressTimer实现效果1

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

然后定义一个Progress类

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

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #ifndef _Progress_H_ #define _Progress_H_   #include "cocos2d.h" USING_NS_CC;   class Progress : public CCLayer { public :      static CCScene* scene();        bool init();        CREATE_FUNC(Progress);        void scheduleFunc( float dt); };   #endif

在Progress.cpp中添加下面代码

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

执行结果:



程序实例:ProgressTimer实现效果1

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





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

 


CCScene* Progress::scene()
{
    CCScene* scene = CCScene::create();
 
    Progress* layer = Progress::create();
 
    scene->addChild(layer);
 
    returnscene;
}
 
bool Progress::init()
{
    CCLayer::init();
     
    //设置背景颜色为白色
    CCLayerColor* layer = CCLayerColor::create(ccc4(255,255,255,255));  
    addChild(layer);   
 
 
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();
 
    CCPoint center = ccp(winSize.width / 2, winSize.height / 2);
 
    CCSprite* bg = CCSprite::create("4.png");
    CCSprite* sprite = CCSprite::create("3.png");
 
    bg->setPosition(center);
 
    addChild(bg);
 
    CCProgressTimer* progress = CCProgressTimer::create(sprite);
 
    progress->setPosition(center);
 
    addChild(progress);
 
    //设置进度条的ID
    progress->setTag(100);
 
    //创建一个定时器
    schedule(schedule_selector(Progress::scheduleFunc),0.1f);
 
    returntrue;
}
 
voidProgress::scheduleFunc(floatdt)
{
    //通过进度条的ID得到进度条
    CCProgressTimer* progress = (CCProgressTimer*)getChildByTag(100);
 
   //设置progress的进度,每调用一次进度加一
    progress->setPercentage(progress->getPercentage() + 1);
     
     //当进度大于或者等于100时
    if(progress->getPercentage() >= 100)
    {
          //终止定时器
        unscheduleAllSelectors();
    }
}



执行结果:

网友评论