Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer)相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

public:

virtualvoid 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()方法


voidHelloWorld::update(floatdt)

{

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()里停止调度器后就实现自动切换操作。

效果预览:

技术分享


Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer) 

http://www.byjth.com/biji/32.html


本文出自 “闭眼就天黑” 博客,请务必保留此出处http://byjth.blog.51cto.com/4127898/1758984

以上是关于Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer)的主要内容,如果未能解决你的问题,请参考以下文章

cocos2dx学习进度

Cocos2dx学习笔记10:cocos2dx序列帧动画

Cocos2dx学习笔记11:cocos2dx调度器(scheduler)

cocos2dx游戏开发学习笔记2-从helloworld開始

cocos2dx3.2 学习笔记--ActionManagerTest

cocos2d-x学习笔记cocos2dx 3.10添加lua LuaFileSystem库遍历文件