个人原创,欢迎转载:http://blog.csdn.net/dawn_moon/article/details/11478885

这个资源加载的loading界面demo是在玩客网做逆转三国的时候随手写的,虽然我在那只待了2个礼拜,但是也算参与了一个商业游戏项目了,学到不少东西。当时使用的cocos2d-x还是1.0版的,我用2.1.2的调试过了。

上图:

好了,很简单,代码有注释

上代码:

[cpp] view plaincopyprint?
  1. #include "HelloWorldScene.h"
  2. #include "SimpleAudioEngine.h"
  3. using namespace cocos2d;
  4. using namespace CocosDenshion;
  5. CCScene* HelloWorld::scene()
  6. {
  7. // 'scene' is an autorelease object
  8. CCScene *scene = CCScene::create();
  9. // 'layer' is an autorelease object
  10. HelloWorld *layer = HelloWorld::create();
  11. // add layer as a child to scene
  12. scene->addChild(layer);
  13. // return the scene
  14. return scene;
  15. }
  16. // on "init" you need to initialize your instance
  17. bool HelloWorld::init()
  18. {
  19. //
  20. // 1. super init first
  21. if ( !CCLayer::init() )
  22. {
  23. return false;
  24. }
  25. m_iLoadIdex = 0;
  26. /
  27. // 2. add a menu item with "X" image, which is clicked to quit the program
  28. //    you may modify it.
  29. // add a "close" icon to exit the progress. it's an autorelease object
  30. CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
  31. "CloseNormal.png",
  32. "CloseSelected.png",
  33. this,
  34. menu_selector(HelloWorld::menuCloseCallback) );
  35. pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
  36. // create menu, it's an autorelease object
  37. CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
  38. pMenu->setPosition( CCPointZero );
  39. this->addChild(pMenu, 1);
  40. /
  41. // 3. add your codes below...
  42. // add a label shows "Hello World"
  43. // create and initialize a label
  44. CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Thonburi", 34);
  45. // ask director the window size
  46. CCSize size = CCDirector::sharedDirector()->getWinSize();
  47. // position the label on the center of the screen
  48. pLabel->setPosition( ccp(size.width / 2, size.height - 20) );
  49. // add the label as a child to this layer
  50. this->addChild(pLabel, 1);
  51. // add "HelloWorld" splash screen"
  52. CCSprite* pSprite = CCSprite::create("HelloWorld.png");
  53. // position the sprite on the center of the screen
  54. pSprite->setPosition( ccp(size.width/2, size.height/2) );
  55. // add the sprite as a child to this layer
  56. this->addChild(pSprite, 0);
  57. // loading边框
  58. m_progressFrame = CCSprite::create("loading_fr.png");
  59. addChild(m_progressFrame,1);
  60. m_progressFrame->setPosition(ccp(240, 50));
  61. // loading的动作条
  62. m_progressBar = CCProgressTimer::create(CCSprite::create("loading_bar.png"));
  63. m_progressBar->setType(kCCProgressTimerTypeBar);
  64. addChild(m_progressBar);
  65. m_progressBar->setVisible(true);
  66. m_progressBar->setPosition(ccp(241, 51));
  67. // 进度动画运动方向,从左到右
  68. m_progressBar->setMidpoint(ccp(0, 0));
  69. // 宽高变化,这里是宽度变化
  70. m_progressBar->setBarChangeRate(ccp(1, 0));
  71. m_progressBar->setPercentage(0);
  72. // loading动画,没有逻辑处理,实际情况则注释掉
  73. CCProgressTo *to = CCProgressTo::create(10, 100);
  74. m_progressBar->runAction(to);
  75. // 实际的loading逻辑,可以在这里加入
  76. //    scheduleUpdate();
  77. return true;
  78. }
  79. void HelloWorld::update(float dt)
  80. {
  81. m_iLoadIdex++;
  82. if (m_iLoadIdex <= 50) {
  83. loadResource(m_iLoadIdex);
  84. m_progressBar->setPercentage(m_iLoadIdex * 100.0 / 50);
  85. }
  86. if (m_iLoadIdex >=50) {
  87. unscheduleUpdate();
  88. }
  89. }
  90. // 实际的loading逻辑,加载资源可以在这里添加。
  91. // 这里只用了sleep来模拟
  92. void HelloWorld::loadResource(int index)
  93. {
  94. CCLog("loading ....");
  95. switch (index) {
  96. case 0:
  97. break;
  98. default:
  99. sleep(1.0);
  100. break;
  101. }
  102. }
  103. void HelloWorld::menuCloseCallback(CCObject* pSender)
  104. {
  105. CCDirector::sharedDirector()->end();
  106. #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  107. exit(0);
  108. #endif
  109. }

东西太简单,还需要上传demo源码么。要的留言

cocos2d-x游戏开发(十五)游戏加载动画loading界面相关推荐

  1. 视频教程 | 3D版切水果游戏开发实战5:加载美术资源

    在我们的前4期开发实战中,我们写代码使用的切割物体都是Egret Pro自带的实体,如:球体.椎体.立方体等,今天我们就来讲讲如何将游戏场景中的切割对象换成美术提供的水果和切刀素材. 核心内容比较简单 ...

  2. flutter 页面加载动画_十、Flutter加载动画

    目录 一.效果展示 二.RoundPainter 三.RoundProgress 四.旋转起来 五.停止旋转 一.效果展示 Flutter加载动画.jpg 二.RoundPainter 同上篇文章&l ...

  3. 游戏开发(十五) 之 任务系统 成就系统

    结合目前的塔防项目,介绍一下游戏开发中的 任务系统 先简单介绍下要讲的任务系统,因为游戏内容不多,所以目前的任务都比较简单,与其说是任务系统,不如叫成就系统.但是就算复杂的MMORPG游戏的任务系统, ...

  4. unity游戏开发入门-Resources动态加载图片

    问题:unity的Resources动态加载就不必多说了,这里出现的问题是当我把图片放入Resources文件夹后,使用Resources.Load(datapath)却并没有出现图片. 分析:由于你 ...

  5. 【Cocos2d-html5游戏引擎学习笔记(6)】自定义Cocos2d-html5加载资源Loading界面

    这一篇其实本该放在后面写的,只是今天正好把这个整出来了,所以为了防止后面忘记,就在这里先写了. 在运行index.html文件的时候,引擎首先会把资源进行加载,这是为了让游戏在运行时更为流畅,避免了在 ...

  6. WebGL简易教程(十五):加载gltf模型

    文章目录 1. 概述 2. 实例 2.1. 数据 2.2. 程序 2.2.1. 文件读取 2.2.2. glTF格式解析 2.2.2.1. 场景节点 2.2.2.2. 网格 2.2.2.3. 缓冲,缓 ...

  7. Android开发中的正在加载动画效果

    有两种实现效果,一种是系统默认效果,一种是自定义效果:默认效果比较简单但效果也比较单调,自定义可以做出比较好看的效果来: 第一种:通过创建一个ProgressDialog对象并设置属性来显示 publ ...

  8. unity3D游戏开发十五之NGUI二

    接下来我们讲解下UILabel,UILabel是用来显示文本的脚本,继承自UIWidget.我们创建一个label,属性如下图: 所有的label都需要Font才可正常工作.这个字体可以使Dynami ...

  9. 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记! .

    http://blog.csdn.net/xiaominghimi/article/details/6127578 http://www.androidegg.com/portal.php?mod=v ...

最新文章

  1. matlab系统的根轨迹,实验五 利用MATLAB绘制系统根轨迹
  2. Hbase完全分布式的搭建
  3. 快排Quick Sort到底有多快?
  4. Oracle init.ora常用配置详解
  5. python 查询文本文件的层次
  6. 让IE浏览器提示下载或直接打开word文档
  7. github上的python爬虫_python爬虫入门(2):让你的github项目火起来
  8. mysql 报错1042_mysql安装中 starting sever报错1042怎么破啊??求助大佬
  9. 数据结构之顺序表和有序表查找其实现
  10. 重启手机出现机器人加一个叹号_印度科幻脑洞高能!《宝莱坞机器人2.0》内地定档...
  11. 「leetcode」78. 子集【回溯算法】详解!
  12. 专升本english
  13. “远程网络教学系统”UML用例图(练习题)
  14. Photoshop学习整理---修复画笔工具
  15. CSS菜鸟教程自学2,Text文本
  16. 数据仓库工程师面经(未完)
  17. Shiro(一)之shiro简介与工作原理
  18. Three.js加载三维管线的简单思路
  19. 揭秘域名劫持反向代理之黑帽SEO技术
  20. eclipse集成scala插件

热门文章

  1. 编写Controller方法
  2. 方法引用_通过对象名引用成员方法
  3. Java中的查找树和哈希表(一级)
  4. 多重循环练习之九九乘法表
  5. ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方...
  6. Java-线程间通信小结
  7. .NET中颜色的转换方法总结
  8. 异步调用WebService方式!
  9. HDU - 3364 Lanterns(高斯消元解方程(取模))
  10. CodeForces - 1343E Weights Distributing(最短路)