这个世界每一天都在验证我们的渺小,但我们却在努力创造,不断的在这生活的画卷中留下自己的脚印,也许等到我们老去的那一天,老得不能动只能靠回忆的那一天,你躺在轮椅上,不断的回忆过去,相思的痛苦忘不了,相恋的甜蜜浮现在心头,嘴角不觉一笑,年少时的疯狂,热情,理想和抱负,都随着岁月的流去而化作人生的财富,或多或少,犹如那夕阳西下的余辉,在慢慢消失着不见。。

(不文艺你会死?)

好吧,最近天天在忙着写游戏,天天写,而且效率还不高,光这两天想着怎么优化和控制敌人出现的逻辑和地图数据的存储,就前前后后墨迹了俩天才写完,好吧,要严重反思一下。总结一下如何提高写代码的效率:写代码的时候不要刷微博,写代码的时候不要开qq,写代码的时候不要上知乎。

恩,就这样子!

=========================================================

以上纯属扯淡,恩,扯淡。。。(说废话好玩吗?)

我们在玩游戏的经常会遇到loading界面,顾名思义,主要用来加预先载资源文件。先来一张效果图:

恩,有点丑,不过大概就这样子哈,加载完成后开启游戏界面

其实这就是一张背景图片 + 一个进度条  + 跟随进度条提示的小框框 + 一个loading文字标签

恩,我们来模拟实现它,首先,我们创建这些资源

 auto winSize = Director::getInstance()->getWinSize();//背景图片auto background = Sprite::create(IMG_LOADINGBG);background->setPosition(winSize.width / 2, winSize.height / 2);this->addChild(background,0);//loading文字标签_loadingLabel = LabelTTF::create("Loading...", "Arial", 25);_loadingLabel->setPosition(winSize.width / 2, winSize.height / 2 - 50);this->addChild(_loadingLabel);//ControlSlider进度条_curProgress = 0;_progressBar = ControlSlider::create("bar_bg.png","bar.png","bar_thumb.png");_progressBar->setPosition(winSize.width / 2, winSize.height / 2);_progressBar->setTouchEnabled(false);_progressBar->setMinimumValue(0);_progressBar->setMaximumValue(100);_progressBar->setValue(0);this->addChild(_progressBar,1);//进度条上面的提示小框框_barTip = Sprite::create(IMG_LOADING_BAR_TIP);_barTip->setPosition(winSize.width / 2 -  _progressBar->getContentSize().width / 2,winSize.height / 2 + 50);this->addChild(_barTip,1);//提示小框框文字标签_barTipLabel = LabelTTF::create("0%", "Arial", 20);_barTipLabel->setPosition(_barTip->getContentSize().width / 2,_barTip->getContentSize().height / 2);_barTip->addChild(_barTipLabel);

然后让它动起来,我们让它执行一百次,哈哈

        //interval,repeat,delaythis->schedule(schedule_selector(LoadingScene::loadingLogic),1.0 / 100 ,100,0.2f);

每次执行动态更新提示框的位置和文字标签的信息,到了第一百次,就开启另外一个界面,恩,就是这么简单。。

void LoadingScene::loadingLogic(float dt){_curProgress ++;if(_curProgress > 100){//begin the game choose sceneDirector::getInstance()->replaceScene(TransitionFade::create(0.5f,ChooseScene::createScene()));return;}_progressBar->setValue(_curProgress);int startX = _progressBar->getPositionX() - _progressBar->getContentSize().width / 2 +10 ;int unitX = _progressBar->getContentSize().width / 100;_barTip->setPositionX(startX + _curProgress * unitX);char str[10] = {0};sprintf(str,"%d%",_curProgress);_barTipLabel->setString(str);}

咦,看到这里有没有觉得哪里不对?好吧,被你发现了,说好的资源加载哪里去了?而且资源加载的进度百分比怎么算的呢?

好吧,继续,比如我们有一百张图片资源。。。(为什么不是99张?)

void LoadingScene::onEnter(){Layer::onEnter();//加载一次图片资源就回调一次Director::getInstance()->getTextureCache()->addImageAsync("1.png",this,callfunc_selector(LoadingScene::loadingCallback));.........Director::getInstance()->getTextureCache()->addImageAsync("100.png",this,callfunc_selector(LoadingScene::loadingCallback));}

然后回调函数实现,每次执行动态更新提示框的位置和文字标签的信息,到了第一百次,就开启另外一个界面,恩,还是这么简单。。。

void LoadingScene::loadingCallback(){_curProgress ++;if(_curProgress > 100){//begin the game choose sceneDirector::getInstance()->replaceScene(TransitionFade::create(0.5f,ChooseScene::createScene()));return;}_progressBar->setValue(_curProgress);int startX = _progressBar->getPositionX() - _progressBar->getContentSize().width / 2 +10 ;int unitX = _progressBar->getContentSize().width / 100;_barTip->setPositionX(startX + _curProgress * unitX);char str[10] = {0};sprintf(str,"%d%",_curProgress);_barTipLabel->setString(str);}

其实思路都差不多啦,大概就是根据( 已经加载的图片数 /  总图片资源数)百分比来算出进度条的百分比来滑动,或者干脆把进度条最大值设置成图片资源总数,加载多少就滑动多少。。

==================================

恩,就这样子吧,好困的夜晚。。晚安

转载于:https://www.cnblogs.com/fzll/p/3954594.html

cocos2d-x 3.0 Loading界面实现相关推荐

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

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

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

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

  3. Cocos Creator—定制H5游戏首页loading界面

    Cocos Creator从1.0版本发布到现在也有一年多了,按理说一些常见的问题网上都有解决方案,例如"如何自定义首页加载进度条界面"这种普遍需求,应该所有人都会遇到的,因此也有 ...

  4. 如何制作一个横版格斗过关游戏 Cocos2d x 2 0 4

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本文实践 ...

  5. 图文并茂使用CocosBuilder制作Cocos2D游戏 分享0

    图文并茂使用CocosBuilder制作Cocos2D游戏  分享0 目 录 The Game 设置工程 创建动画类型的主界面 本文由Zynga 工程师原创,翻译:Iven,张作宸,Butterfly ...

  6. TCP聊天+传输文件服务器服务器套接字v2.6 - 登录注册界面更新 - loading界面应用

    TCP聊天+传输文件服务器服务器套接字v2.6 更改的地方: 主要是客户端界面更改 注册, 登录界面 (都知道啊, v1.8的改进后输入用户名, 到了主界面的时候才能输入密码, 但现在是直接输入用户名 ...

  7. jquery 加载显示loading图标_王者荣耀100强什么意思?loading界面左上角100强有什么含义...

    王者荣耀s20赛季更新后也就是2020年7月份以后,loading界面左上角突然出现100强.50强,有时候还有第10.第9这样的标志,这些是什么意思呢?怎么才能展示? 王者荣耀100强是什么意思? ...

  8. 服务器 战地4 无限载入,战地4卡在loading界面无限载入怎么办

    战地4卡在loading界面无限载入怎么办攻略: 首先说下卡在loading界面的问题,所谓卡loading界面,就是地图载入画面过后,黑屏,画面右上角有loading图标闪烁,可以听到声音,但是没法 ...

  9. 服务器 战地4 无限载入,战地4卡在loading界面无限载入_战地4无限载入解决方法...

    战地4卡在loading界面无限载入_战地4无限载入解决方法 首先说下卡在loading界面的问题,所谓卡loading界面,就是地图载入画面过后,黑屏,画面右上角有loading图标闪烁,可以听到声 ...

最新文章

  1. 浏览器默认标签样式总结及css初始化程序(转)
  2. RxSwift技术路线与参考资料
  3. 在移动硬盘里移动视频文件到移动硬盘 另外一个文件夹 显示正在计算_古风玩数码 篇九十六:物超所值?移动固态硬盘到底值不值?阿斯加特移动硬盘AP2上手体验_固态硬盘...
  4. springboot 搭建分布式_爱了!阿里巴巴内部出品“SpringBoot+微服务指南”,理论与实战...
  5. golang红包算法
  6. 图解 Git 工作原理,看完你就懂了!
  7. data怎么给echart传值_通用技术 VUE 子父组件传值
  8. 腾讯alloyteam团队前端代码规范(记录)
  9. Dubbo源码分析系列-Dubbo的动态编译原理
  10. opencv 打印文字_如何使用OpenCV+Python去除手机拍摄文本底色
  11. matlab2016限制内存,matlab
  12. mysql 百度地图 省市_批量获取百度地图的行政区划电子围栏
  13. JS打印三角形,菱形,平行四边形.
  14. instant-ngp
  15. vue图片连拼实现gif图效果
  16. Web 3 大会 | 伍鸣博士发表主题演讲
  17. HC-05蓝牙模块简易说明
  18. 护肤品买了这么多还是不见好转,钱都去哪里了?
  19. 解决windows2012server中80端口被占用
  20. 语言与区域设置ID (Language ID、Locales ID / LCID)

热门文章

  1. 在CLion中运行Ninja项目
  2. 三个点在同一个半圆的概率_【国际数学竞赛】列方程求概率
  3. java贪心算法 区间调度_贪心算法-区间调度问题解之证明(示例代码)
  4. mysql和oracle执行计划_mysql explain执行计划详解
  5. SaaS到底是什么,如何做?这份笔记讲明白了
  6. 阿里软件测试工程师手把手教学——如何更好地设计测试用例?
  7. java分布式+高可用_[Java复习] 分布式高可用-Hystrix
  8. 罗伯特扫地机器人电池如何取_irobot扫地机器人电池怎么拆 iRobot/艾罗伯特扫地...
  9. mysql get_mysql GET DIAGNOSTICS 语法
  10. 南京工业大学python考试题库_程序设计语言(Python程序设计)答案