加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 17:24:58 所属栏目:百科 来源:网络整理
导读:我在上一篇博客中介绍了ProgressTimer的用法,这篇博客决定写一些使用Progress实现一些简单的效果, 程序实例:ProgressTimer实现效果1 首先在工程目录下的Resource文件夹中添加两张图片 然后定义一个Progress类 在Progress.h中添加下面的代码 ? 1 2 3 4 5 6

我在上一篇博客中介绍了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
{
:
static CCScene* scene();
bool init();
CREATE_FUNC(Progress);
void scheduleFunc( float dt);
};
#endif

在Progress.cpp中添加下面代码

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
"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 / );
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 ));
//设置进度条的起始位置
progress->setMidpoint(ccp( ));
//设置进度条的ID
progress->setTag( 100 );
//创建一个定时器
schedule(schedule_selector(Progress::scheduleFunc),monospace!important; font-size:1em!important; min-height:auto!important">.1f);
return true ;
}
Progress::scheduleFunc( dt)
{
//通过进度条的ID得到进度条
CCProgressTimer* progress = (CCProgressTimer*)getChildByTag( );
//设置progress的进度,每调用一次进度加一
progress->setPercentage(progress->getPercentage() + );
//当进度大于或者等于100时
if (progress->getPercentage() >= )
{
//终止定时器
unscheduleAllSelectors();
}
}

执行结果:


首先在工程目录下的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));  
    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();
    }
}



执行结果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

相关内容
推荐文章
站长推荐
热点阅读