Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer)
2016-03-31 21:04
519 查看
在游戏开发中,我们通常需要做一个游戏的进度条来过渡游戏的场景切换或者显示游戏资源的加载进度。同样的来说,进度条可以在角色扮演游戏中作为玩家或者怪物头顶的生命条,或者消除类休闲游戏的倒计时等。进度条多种多样,如何合理的使用根据游戏的项目需求而定。在cocos2dx中,进度条使用 ProgressTimer 来实现,首先要定义精灵绑定进度条。打开我们创建的项目cocosxuexi,直接改写init()初始化里的代码来实现,先把以前写的代码注释掉。1、首先在HelloWorldScene.h文件里定义2个指针。public:virtualvoid update(float dt);//默认调度器private:ProgressTimer* progress1;//定义进度条指针
LabelTTF* numsTTF;//定义标签指针
2、在HelloWorldScene.cpp里init()方法里创建一个进度条和一个进度条的边框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
LabelTTF* numsTTF;//定义标签指针
2、在HelloWorldScene.cpp里init()方法里创建一个进度条和一个进度条的边框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
相关文章推荐
- jquery彩色投票进度条简单实例演示
- jquery模拟进度条实现方法
- PHP设置进度条的方法
- jquery实现模拟百分比进度条渐变效果代码
- js ajax加载时的进度条代码
- javascript实现简单的进度条
- js插件YprogressBar实现漂亮的进度条效果
- ajax 异步上传带进度条视频并提取缩略图
- 基于jquery步骤进度条源码分享
- jquery插件NProgress.js制作网页加载进度条
- jQuery实现进度条效果代码
- jQuery简单实现提交数据出现loading进度条的方法
- jquery实现加载进度条提示效果
- jQuery实现页面顶部显示的进度条效果完整实例
- jQuery实现文件上传进度条特效
- jQuery实现简单的文件上传进度条效果
- 分享8款优秀的 jQuery 加载动画和进度条插件
- 自定义刻度jQuery进度条及插件
- ListView 百分比进度条(delphi版)
- 基于HTML5 Ajax实现文件上传并显示进度条