Cocos2d-x 3.2 之 进度条 progressTimer

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************

好长时间没有更博了。。

有点懒啊。。

亲身经历提示广大猿们:换季了,防感冒!

言归正传,最近在做 三消的手游,

关卡设计是没指望了,只能做个限时的,所以,就研究了研究schedule,

这个以后再更新,

度娘搜索的时候,看到了进度条的progressTimer,

这个很好玩的样子,于是就做了下,感觉不错。

1.What?

API解释:

ProgressTimer是Node的子类。 该类根据百分比来渲染显示内部的Sprite对象。 变化方向包括径向,水平或者垂直方向。

就是这样的情况:

2. How?

这个的实现就是通过progressTimer

与之前版本不同,

之前版本类型很多:

  1. kCCProgressTimerTypeRadialCCW,         扇形逆时针形式
  2. kCCProgressTimerTypeRadialCW,          扇形顺时针形式
  3. kCCProgressTimerTypeHorizontalBarLR,   从左往右增张的形式
  4. kCCProgressTimerTypeHorizontalBarRL,   从右往左增张的形式
  5. kCCProgressTimerTypeVerticalBarBT,     从下往上增张的形式
  6. kCCProgressTimerTypeVerticalBarTB,     从上往下增张的形式

而现在Type只有两种:

①条型的设置

就是第三个图:

<span style="font-family:Comic Sans MS;font-size:14px;">// 添加图片
auto sprite = Sprite::create("h7.png");
// 新建progressTimer对象,将图片载入进去
ProgressTimer *ct= ProgressTimer::create(sprite);
ct->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
// 设置Tag,为后面更新准备
ct->setTag(10);
ct->setScale(0.2);

this -> addChild(ct);
// 设置初始的百分比,0~100 可以是0或者100
ct->setPercentage(0);
// 选择类型,是条型还是时针型
ct->setType(kCCProgressTimerTypeBar);
//ct->setReverseProgress(true);

// 下面两个条形的进阶
ct->setMidpoint(Point(0,0));
ct->setBarChangeRate(Point(0,1));
scheduleUpdate();</span>

然后,在.h 声明函数 void update( float t )

在.cpp定义函数

<span style="font-family:Comic Sans MS;font-size:14px;">void HelloWorld::update( float t )
{
	// 通过上面Tag设置,获取对象
	CCProgressTimer *ct=(CCProgressTimer*)getChildByTag(10);
	// 获取当前进度
	int num = ct->getPercentage();
	// 设置进度速度(此处为每帧+1)
	ct->setPercentage( ++num );
	// 设置了循环播放
	if( num >= 100 )
		ct -> setPercentage(0);
}</span>

此处,我是通过帧数来控制的速度,

当然也可以通过  自己调用的update来设置速度。

条形的可以从上到下,从下向上,或者从中间向两边

这个的控制,就是通过上面代码中,进阶的部分:

<span style="font-family:Comic Sans MS;font-size:14px;">ct->setMidpoint(Point(0,0));
ct->setBarChangeRate(Point(0,1));</span>

setMidpoint 是定义从哪开始

这个和锚点的设置一样,0,0左下角,1,1是右上角

setBarChangeRate 是 定义 方向

1,0是自下而上

0,1是自左向右

②时针型的设置

<span style="font-family:Comic Sans MS;font-size:14px;">	// 添加图片
	auto sprite = Sprite::create("h7.png");
	// 新建progressTimer对象,将图片载入进去
	ProgressTimer *ct= ProgressTimer::create(sprite);
	ct->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
	// 设置Tag,为后面更新准备
	ct->setTag(10);
	ct->setScale(0.2);

	this -> addChild(ct);
	// 设置初始的百分比,0~100 可以是0或者100
	ct->setPercentage(0);
	// 选择类型,是条型还是时针型
	ct->setType(kCCProgressTimerTypeRadial);
	ct->setReverseProgress(false);

	// 下面两个条形的进阶
//	ct->setMidpoint(Point(0,0));
//	ct->setBarChangeRate(Point(0,1));
	scheduleUpdate();</span>

update函数还是那样,

默认是顺时针,

setReverseProgress

——false
顺时针

——true 逆时针

这样第二个的图片就实现了。

③ 第一个图片那种如何实现呢?

其实,So easy

只需要弄一张暗一点的图片,在底下衬着:

<span style="font-family:Comic Sans MS;font-size:14px;">auto sprite2 = Sprite::create("h7_02.png");
sprite2->setScale(0.2);
sprite2->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this -> addChild(sprite2);</span>

就是这样~

进度条你学会了吗?

同为新手,如有错误,敬请指出,共同进步 O(∩_∩)O~

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************

时间: 2024-08-08 00:42:25

Cocos2d-x 3.2 之 进度条 progressTimer的相关文章

CocoStudio使用笔记2:cocos2dx3.9使用CocoStudio制作的进度条LoadingBar

作为菜鸟曾一直使用手写cocos2dx界面,最近一直在研究cocostudio这个工具.尝试着使用工具来快速的开发游戏,折腾了一个多星期了,每天不停的搜索资料. 记录下本人试用cocostudio制作的启动界面所遇到的问题和经验,方便以后查阅. 首先设置编辑器的分辨率为480*800安卓分辨率的大小. 添加一个sprite精灵使用大小为480*800的图片(background.png)作为背景,然后添加sprite精灵作为游戏logo(logo.png),继续添加sprite作为进度条的背景(

cocos2dx 3.x(加载cocostudio进度条)

1 // 2 // MyLoagingScene.hpp 3 // My 4 // 5 // Created by work on 16/10/13. 6 // 7 // 8 9 #ifndef MyLoagingScene_hpp 10 #define MyLoagingScene_hpp 11 12 #include <stdio.h> 13 #include "cocos2d.h" 14 #include <editor-support/cocostudio/C

1.CCProgressTo进度动作,条形进度条,扇形进度条

 1 Bar形进度 CCSprite * proBack = CCSprite::create("barback.png"); proBack->setPosition(ccp(winSize.width/2 - 100,winSize.height/2)); addChild(proBack); CCProgressTimer * left = CCProgressTimer::create(CCSprite::create("bar.png")); l

CCProgressAction进度条动作的使用(扇形和条形)

CCProgressAction进度条动作的使用(扇形和条形) 扇形进度条的使用:ProgressTo, ProgressFromTo, ProgressTimer 的使用 1 ///////// 扇形进度条的使用 //////////////////// 2 3 // 执行的动作,进度条的动作 4 // 参数(时间,完成度(100:表示全部显示)) 5 ProgressTo *progressTo = ProgressTo::create(5.0f, 100); // 从 0 开始 6 //P

扇形进度条的应用(冷却的技能效果)

使用进度条动作制作冷却的技能效果 扇形进度条的应用 1 /////////// 冷却的技能效果 //////////////////// 2 3 4 // 执行的动作,进度条的动作 5 // 参数(时间,完成度(100:表示全部显示)) 6 ProgressTo *progressTo = ProgressTo::create(5.0f, 100); // 从 0 开始运动 7 // 表示是从 _% 到 _% 显示 8 //ProgressFromTo *progressFromTo = Pro

iOS_31_cocos2d_Progress进度条

最终效果图: 进度条节点[CCProgressNode],构造时依赖一个Sprite 为[CCProgressNode]添加一个CCActionProgressFromTo动作 也可以在update方法中,更改[CCProgressNode]的percentage属性,实现进度条效果 [CCProgressNode]基本属性: [CCProgressNode]构造方法: 它的类型只有两种: 雷达和条形 进度条场景代码 // // ProgressScene.h // 31_cocos2D入门 /

进度条的写法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Cocos2d-x 3.4 进度条总结

 Cocos2d-x 3.4 进度条 旋转进度条 auto s = Director::getInstance()->getWinSize(); auto to1 = Sequence::createWithTwoActions(ProgressTo::create(2,100),ProgressTo::create(0,0));//旋转进度条 auto left = ProgressTimer::create(Sprite::create("Images/grossini.png&q

quick-cocos2d-x 加载进度条的学习

先上quick代码: 1 --[[创建扇形的进度加载条]] 2 3 --创建进度动作的Action(进度时间,最终比例) 4 local to1 = CCProgressTo:create(1, 100) 5 6 --传入作为进度条用的精灵,创建ProgressTimer 7 local pTimer = CCProgressTimer:create(CCSprite:create(s_pPathSister1)) 8 pTimer:setType(kCCProgressTimerTypeRad