Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer)
首页 > cocos2dx专栏 > cocos2dx学习    作者:闭眼就天黑   2015年9月30日 13:57 星期三   热度:12742°   百度已收录  
时间:2015-9-30 13:57   热度:12742° 

在游戏开发中,我们通常需要做一个游戏的进度条来过渡游戏的场景切换或者显示游戏资源的加载进度。

同样的来说,进度条可以在角色扮演游戏中作为玩家或者怪物头顶的生命条,或者消除类休闲游戏的倒计时等。进度条多种多样,如何合理的使用根据游戏的项目需求而定。

cocos2dx中,进度条使用 ProgressTimer 来实现,首先要定义精灵绑定进度条。

打开我们创建的项目cocosxuexi,直接改写init()初始化里的代码来实现,先把以前写的代码注释掉。

1、首先在HelloWorldScene.h文件里定义2个指针。

public:

virtual void update(float dt);//默认调度器

private:

 ProgressTimer* progress1;//定义进度条指针

 LabelTTF* numsTTF;//定义标签指针

2、HelloWorldScene.cppinit()方法里创建一个进度条和一个进度条的边框

     Size visibleSize = Director::getInstance()->getVisibleSize();

Vec2 origin = Director::getInstance()->getVisibleOrigin();

//创建一个进度条精灵边框  

   auto progressbgSprite=Sprite::create("loadKuang.png");   

   progressbgSprite->setPosition(Vec2(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2));    

   this->addChild(progressbgSprite, 1);  

     

    //创建一个进度条精灵 

   auto progressSprite=Sprite::create("loadBar.png");   

   progress1=ProgressTimer::create(progressSprite);      

   progress1->setType(kCCProgressTimerTypeBar);       

   progress1->setPosition(Vec2(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2));     

   //进度动画运动方向,可以多试几个值,看看效果  

   progress1->setMidpoint(Vec2(0, 0));      

   //进度条宽高变化  

   progress1->setBarChangeRate(Vec2(1, 0));       

   progress1->setPercentage(0); //设置进度条百分比为0%     

   this->addChild(progress1, 1);    

   numsTTF=CCLabelTTF::create("0""Thonburi", 18);      

   numsTTF->setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2);      

   this->addChild(numsTTF, 1);  

   scheduleUpdate();  //默认调度器,调用update()方法

    3、HelloWordScene.cpp里实现update()方法

void HelloWorld::update(float dt)

{

    float cu=progress1->getPercentage();  //获取百分比     

    cu=cu+1.0f;  //进度条进度 每次加1%      

    progress1->setPercentage(cu);  

   

if (cu <= 100)    //如果进度小于等于100%  

    {

auto str1 = String::createWithFormat("%.2f%%",cu);   

numsTTF->setString(str1->getCString());  //设置标签显示内容

    }

    //如果进度条达到100%,则停止

    else

    {

unscheduleUpdate();//停止默认调度器

 }

 }

到此一个可用的进度条就已经实现了。如果用来实现场景自动切换,直接在update()里停止调度器后就实现自动切换操作。

效果预览:

学习笔记12:图1.gif

二维码加载中...
本文作者:闭眼就天黑      文章标题: Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer)
本文地址:https://www.byjth.com/biji/32.html
版权声明:若无注明,本文皆为“闭眼就天黑专栏_技术博客_个人学习总结”原创,转载请保留文章出处。
相关文章

版权所有:《闭眼就天黑专栏_技术博客_个人学习总结》 => 《Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer)
本文地址:https://www.byjth.com/biji/32.html
除非注明,文章均为 《闭眼就天黑专栏_技术博客_个人学习总结》 原创,欢迎转载!转载请注明本文地址,谢谢。

返回顶部    首页    手机版本    版权所有:闭眼就天黑专栏_技术博客_个人学习总结
    站长: 闭眼就天黑    搜索cocos2dx主题 技术支持:闭眼就天黑   皖ICP备14007736号-1  

皖公网安备 34132102000107号

   sitemap