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

上图:

好了,非常easy,代码有凝视

上代码:

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

      

  118. // 这里仅仅用了sleep来模拟  
  119. void HelloWorld::loadResource(int index)  
  120. {  
  121.     CCLog("loading ....");  
  122.     switch (index) {  
  123.         case 0:  
  124.             break;  
  125.         default:  
  126.             sleep(1.0);  
  127.             break;  
  128.     }  
  129. }  
  130.   
  131.   
  132. void HelloWorld::menuCloseCallback(CCObject* pSender)  
  133. {  
  134.     CCDirector::sharedDirector()->end();  
  135.   
  136. #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)  
  137.     exit(0);  
  138. #endif  
  139. }  

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

cocos2d-x游戏开发(十五)游戏载入动画loading界面的更多相关文章

  1. cocos2d-x游戏开发(十五)游戏加载动画loading界面

    个人原创,欢迎转载:http://blog.csdn.net/dawn_moon/article/details/11478885 这个资源加载的loading界面demo是在玩客网做逆转三国的时候随 ...

  2. unity3D游戏开发十八之NGUI动画

    我们先来看下帧动画,顾名思义,就是一帧帧的图片组成的动画,我们须要用到UISprite Animation组件,它的属性例如以下: Framerate:播放速率,也就是每秒钟播放的帧数 Name Pr ...

  3. 【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)

    在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效:合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次. 在 Android 中.常用于播放游戏背景音乐的类是 ...

  4. Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)

    Unity是一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品.作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎.Unity作为一个游戏开发工具,它的设计主旨 ...

  5. Unity 2D游戏开发教程之游戏精灵的开火状态

    Unity 2D游戏开发教程之游戏精灵的开火状态 精灵的开火状态 “开火”就是发射子弹的意思,在战争类型的电影或者电视剧中,主角们就爱这么说!本节打算为精灵添加发射子弹的能力.因为本游戏在后面会引入敌 ...

  6. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

  7. 《C++游戏开发》笔记十一 平滑动画:不再颤抖的小雪花

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9430645 作者:七十一雾央 新浪微博:http:/ ...

  8. STC8H开发(十五): GPIO驱动Ci24R1无线模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  9. [Unity3D]Unity3D游戏开发Lua随着游戏的债券(于)

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. bzoj 2935 [Poi1999]原始生物——欧拉回路思路!

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2935 有向图用最小的路径(==总点数最少)覆盖所有边. 完了完了我居然连1999年的题都做不 ...

  2. 安装最新版本 nginx

    有时用操作系统默认安装 yum install apt install , 版本都会低,当然存在的bug 也会有.装最新版本 nginx 需要用他自己的源: sudo add-apt-reposito ...

  3. GYM 101350 F. Monkeying Around

    F. Monkeying Around time limit per test 2.0 s memory limit per test 256 MB input standard input outp ...

  4. 【洛谷】P1554 梦中的统计

    P1554 梦中的统计 题目背景 Bessie 处于半梦半醒的状态.过了一会儿,她意识到她在数数,不能入睡. 题目描述 Bessie的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数.她开始注意每一 ...

  5. 安装mysql报错2503

    安装MySQL-5.5.27报这个错误: The installer has encountered an unexpected error installing this package.This ...

  6. centos7默认安装没有连接网络

    1.显示所有连接 #nmcli con show 2.连接网络 #nmcli con up ens33 这个ens33是通过第一步查到的 /etc/sysconfig/network-scripts目 ...

  7. 从0开始学习 GitHub 系列之「01.初识 GitHub

    转载:http://blog.csdn.net/googdev/article/details/52787516 1. 写在前面 我一直认为 GitHub 是程序员必备技能,程序员应该没有不知道 Gi ...

  8. Android 对保存在 sharedpreference的重要数据进行编解码

    有时候为了登录方便会将用户名和密码保存在 sharedpreference里面,可是如果不加以处理密码将以明文保存. 在Android中java层提供了工具类:android.util.Base64; ...

  9. <第一周>降维

    PCA 矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值为第一主成分,以此类推 主要过程 对所有样本进行中心化 计算样本的协方差矩阵 XX.T 对协方差矩阵做特征 ...

  10. BZOJ 1925地精部落题解

    题目链接 一道神仙题,有很多思考的方式,这里选择最好理解的一种来讲 我们将序列分为两种,一种开头递增,一种开头递减,显然这两种序列的数目是一样的 现在我们只用考虑开头递增的情况 f[i][j]表示前i ...