CCProgressTimer,创建使用这个节点可以大致实现两个作用的效果:

其一:在游戏中几乎大部分的游戏启动界面都是游戏加载画面,那么用到的一般是进度条提示加载进度,其使用的就是CCProgressTimer。

其二:在游戏中需要对精灵的出现等动作制作一些渐显的效果。

(1)类型一般就是两种:

1 typedef enum {
2     /// Radial Counter-Clockwise
3     kCCProgressTimerTypeRadial,
4     /// Bar
5     kCCProgressTimerTypeBar,
6 } CCProgressTimerType;

①类型1:radial(环形)

1 CCSize wSize = CCDirector::sharedDirector()->getWinSize();
2     progressTimer = CCProgressTimer::create(CCSprite::create("progress.gif"));
3     progressTimer->setType(kCCProgressTimerTypeRadial);
4     // 默认的情况下,环形渐变的方向是:顺时针
5     // 改变其渐变的方向 Makes the ridial CCW (逆时针)
6     progressTimer->setReverseProgress(true);
7     progressTimer->setPosition(wSize.width/2,wSize.height/2);
8     this->addChild(progressTimer);

②类型2:bar  (条形:包括vertical 和 horizontal)

渐变的方向问题:

vertical竖直方法包括从上到下和从下到上;

horizontal水平方向包括从左到右和从右到左。

这里涉及到两个设置参数:

首先是setMidpoint设置起点

其次是setBarChangeRate设置变化rate

如果不用变化的方向,则设置该方向为0,否则设置为1。

 1 CCSize wSize = CCDirector::sharedDirector()->getWinSize();
 2     progressTimer = CCProgressTimer::create(CCSprite::create("progress.gif"));
 3     progressTimer->setType(kCCProgressTimerTypeBar);
 4
 5     //从左到右
 6     progressTimer->setMidpoint(ccp(0, 0.5));
 7     progressTimer->setBarChangeRate(ccp(1, 0));
 8
 9     //从右到左
10 //    progressTimer->setMidpoint(ccp(1, 0.5));
11 //    progressTimer->setBarChangeRate(ccp(1, 0));
12
13     //从上到下
14 //    progressTimer->setMidpoint(ccp(0.5, 1));
15 //    progressTimer->setBarChangeRate(ccp(0, 1));
16
17     //从下到上
18 //    progressTimer->setMidpoint(ccp(0.5, 0));
19 //    progressTimer->setBarChangeRate(ccp(0, 1));
20
21     progressTimer->setPosition(wSize.width/2,wSize.height/2);
22     this->addChild(progressTimer);

(2) 执行变化

①、如果是要实现精灵渐变的显示效果:

创建CCProgressTo或者是CCProgressFromTo动作,让CCProgressTimer执行。
CCProgressTo和CCProgressFromTo的区别是:

前者:Progress to percentage(初始化有两个参数)(float duration, float fPercent)

后者:Progress from a percentage to another percentage(初始化有三个参数)(float duration, float fFromPercentage, float fToPercentage)

1 CCProgressTo *progressTo = CCProgressTo::create(2.0, 100);
2     //等价于:
3     //CCProgressFromTo *progressFromTo = CCProgressFromTo::create(2.0, 0, 100);
4     progressTimer->runAction(CCRepeatForever::create(progressTo));

②、如果是要实现加载进度条的效果:

需要重载update方法,在这个方法中实现进度条percentage的变化。

1 this->scheduleUpdate();

1 void HelloWorld::update(float dt)
2 {
3     float percentage = progressTimer->getPercentage();
4
5     if (percentage < 100) {
6         percentage += 1;
7         progressTimer->setPercentage(percentage);
8     }
9 }

转载于:https://www.cnblogs.com/atong/p/3309785.html

Cocos2d-x 中 CCProgressTimer相关推荐

  1. 浅谈cocos2d游戏中天气系统的简单实现

    一.前言 此博客由一个新手游戏程序编写,没有高深的技术,基本是天气效果表现和代码设计的浅谈,如果有更好的实现方法,欢迎指正. 二.背景 该系统设计背景:2D游戏.正交45度表现地图.以及同一张地图上存 ...

  2. 【IOS】如何在cocos2d 游戏中添加 移动广告

    最近有需要在一款Cocos2d 游戏里面添加移动广告,大家都知道,现在有很多的移动广告平台,每个平台都有自己的SDK,每个SDK的方法,流程又都不一样,找来找去,找到了 果合移动广告. 它自己的网站上 ...

  3. 如何在Cocos2D游戏中实现A*寻路算法(五)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  4. Cocos2d—android 中常用的工具类

    <span style="font-size:18px;"> 在开发游戏过程中通常会用到一个经常编写的重复的代码,比如加载游戏地图,从地图中加载指定点的集合,序列帧的播 ...

  5. 如何在Cocos2D游戏中实现A*寻路算法(三)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  6. 如何在Cocos2D游戏中实现A*寻路算法(七)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  7. 如何在Cocos2D游戏中实现A*寻路算法(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  8. cocos2d JS 中的数组拼接与排序

    1 var arrA = [];//创建三个局部变量的新数组 2 var arrB = []; 3 var arrC = []; 4 var newCards = this.MyMahjong;//创 ...

  9. 【iOS-Cocos2d游戏开发之十五】详解CCProgressTimer 进度条并修改cocos2d源码实现“理想”游戏进度条!...

    为什么80%的码农都做不了架构师?>>>     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigam ...

最新文章

  1. [USACO12MAR]拖拉机
  2. 理解Flight框架核心
  3. 快手基于RocketMQ的在线消息系统建设实践
  4. hdu 5036 Explosion bitset优化floyd
  5. pcap_open 和 pcap_open_live
  6. 【狂神MySQL笔记】常用命令行语句(1)
  7. Pads9.5的PCB文件转allegro16.6的BRD文件方法
  8. 免费U盘数据恢复软件有哪些,如何免费恢复U盘的数据
  9. DEV pivotGridControl 单元格内容变色
  10. html屏幕遮挡,遮挡屏幕怎么设置 为什么手机上会出现请勿遮挡屏幕顶端
  11. Vulkan_间接绘制(vkCmdDrawIndexedIndirect)
  12. 关于class not fount的错误
  13. 共射极放大电路静态工作点自动调整分析
  14. 【idea文件夹右键新建,没有Java Class选项】
  15. 【物联网+区块链=?】展锐、蚂蚁链、广和通联合发布可信上链模组
  16. 计算机组成原理组成.ppt,计算机组成原理xu.ppt
  17. 多核多线程中小和尚老和尚取水喝水问题
  18. 教程get | K8S部署OpenStack容器云(下)
  19. 为百度阅读web端添加工具栏——百阅栏的诞生
  20. 数据赋能 兴业惠民 | 山东省第三届数据应用创新创业大赛潍坊分赛场火热报名中

热门文章

  1. mysql删除重复sql_mysql中删除完全重复数据的准确SQL语句
  2. 【mybatis mapper XML】自增主键
  3. 【spring boot】支持webjars
  4. javascript Window 对象模型
  5. 【若依(ruoyi)】datetimepicker日期和时间插件
  6. 【maven插件】asciidoctor-maven-plugin:编译Asciidoc
  7. python下的所有文件_python批量复制文件夹下所有文件大小
  8. c语言程序设计第二版李学刚,C语言程序设计(第2版)李学刚教学资源教学课件2-7 动态变量.pptx...
  9. layui导入模板数据_实物资产管理软件操作手册(数据接口)
  10. mysql dump 导入导出_使用mysqldump导入导出数据