在游戏开发中有些资源需要预先加载在内存中这样方便我们在以后的使用。从而加快游戏的速度。特别 是预先从网络上下载资源的更需要一个友好的界面来告诉用户程序正在加载中。这个时候就需要我们做一个loading 界面
废话不多说下面开始讲解思路
1 当加载图片的时候使用 CCTextureCache::sharedTextureCache()->addImageAsync("gmbg/longding.png",this,callfuncO_selector(LoadingLayer::loadCallBack));
这个方法 其中 loadCallBack 是回调函数 当然在使用网络加载图片资源的时候 回调方法也设置成这个 就OK
2 加载特效使用的 是cocos2d-x 中进度条
部分代码如下
- // 添加进度条
- CCSprite* loadimg=CCSprite::create("gmbg/longding.png");
- CC_BREAK_IF(!loadimg);
- CCProgressTimer* pt = CCProgressTimer::create(loadimg);
- pt->setType(kCCProgressTimerTypeBar);// 设置成横向的
- //可以看作是按矩形显示效果的进度条类型
- pt->setMidpoint(ccp(0,0));
- // 用来设定进度条横向前进的方向从左向右或是从右向左
- pt->setBarChangeRate(ccp(1,0));
- //重新设置锚点
- float tex=getWinSize().width/2+getWinOrigin().x;
- float tey=getWinSize().height/5+getWinOrigin().y-5;
- pt->setPosition(ccp(tex,tey));
- pt->setPercentage(0);
- this->addChild(pt,2,1);
// 添加进度条 CCSprite* loadimg=CCSprite::create("gmbg/longding.png"); CC_BREAK_IF(!loadimg); CCProgressTimer* pt = CCProgressTimer::create(loadimg); pt->setType(kCCProgressTimerTypeBar);// 设置成横向的 //可以看作是按矩形显示效果的进度条类型 pt->setMidpoint(ccp(0,0)); // 用来设定进度条横向前进的方向从左向右或是从右向左 pt->setBarChangeRate(ccp(1,0)); //重新设置锚点 float tex=getWinSize().width/2+getWinOrigin().x; float tey=getWinSize().height/5+getWinOrigin().y-5; pt->setPosition(ccp(tex,tey)); pt->setPercentage(0); this->addChild(pt,2,1);
上面两点是主要的技术点 可以看做是鲜花不过在美的鲜花也需要 绿叶的衬托 对于一些别的 准备工作 就可以看做是 绿叶 这个是loadingLayer 类的生命
- #ifndef __LOADING_LAYER_H__
- #define __LOADING_LAYER_H__
- #include "BaseLayer.h"
- class LoadingLayer:public BaseLayer{
- public:
- virtualbool init();
- CREATE_FUNC(LoadingLayer);
- static cocos2d::CCScene* scene();
- void loadCallBack(cocos2d::CCObject* ped);// 异步加载图片时 的回调函数
- LoadingLayer();
- private:
- int loadingNum;//用来记录当前的加载图片的数量
- int totalNum;// 一共要加载的图片数量
- bool setUpdateView();// 用来初始化页面的 基本的纹理
- };
- #endif
#ifndef __LOADING_LAYER_H__ #define __LOADING_LAYER_H__ #include "BaseLayer.h" class LoadingLayer:public BaseLayer{ public: virtual bool init(); CREATE_FUNC(LoadingLayer); static cocos2d::CCScene* scene(); void loadCallBack(cocos2d::CCObject* ped);// 异步加载图片时 的回调函数 LoadingLayer(); private: int loadingNum;//用来记录当前的加载图片的数量 int totalNum;// 一共要加载的图片数量 bool setUpdateView();// 用来初始化页面的 基本的纹理 }; #endif
下面在贴出init 方法
- bool LoadingLayer::init(){
- bool isRet=false;
- do
- {
- CC_BREAK_IF(!BaseLayer::init());
- CC_BREAK_IF(!this->setUpdateView());
- CCTextureCache::sharedTextureCache()->addImageAsync("gmbg/longding.png",this,callfuncO_selector(LoadingLayer::loadCallBack));
- isRet=true;
- } while (0);
- return isRet;
- }
bool LoadingLayer::init(){ bool isRet=false; do { CC_BREAK_IF(!BaseLayer::init()); CC_BREAK_IF(!this->setUpdateView()); CCTextureCache::sharedTextureCache()->addImageAsync("gmbg/longding.png",this,callfuncO_selector(LoadingLayer::loadCallBack)); isRet=true; } while (0); return isRet; }
由于本人 不喜欢在 init 方法中写 很多 初始化的东西 所以本人 定义了一个 setUpdateView 的方法 本人写代码习惯把代码封装成一小块 一小块 这纯属个人爱好 下面贴出里面的代码
- bool isRet=false;
- do
- {
- // 设置进度条的背景图片 我们把他放到屏幕下方的1/5处
- CCSprite* loadbackimg=CCSprite::create("gmbg/lodingbg.png");
- CC_BREAK_IF(!loadbackimg);
- loadbackimg->setPosition(ccp(getWinSize().width/2+getWinOrigin().x,getWinSize().height/5+getWinOrigin().y));
- this->addChild(loadbackimg,1);
- // 添加进度条
- CCSprite* loadimg=CCSprite::create("gmbg/longding.png");
- CC_BREAK_IF(!loadimg);
- CCProgressTimer* pt = CCProgressTimer::create(loadimg);
- pt->setType(kCCProgressTimerTypeBar);// 设置成横向的
- //可以看作是按矩形显示效果的进度条类型
- pt->setMidpoint(ccp(0,0));
- // 用来设定进度条横向前进的方向从左向右或是从右向左
- pt->setBarChangeRate(ccp(1,0));
- //重新设置坐标
- float tex=getWinSize().width/2+getWinOrigin().x;
- float tey=getWinSize().height/5+getWinOrigin().y-5;
- pt->setPosition(ccp(tex,tey));
- pt->setPercentage(0);
- this->addChild(pt,2,1);
- isRet=true;
- } while (0);
- return isRet;
bool isRet=false; do { // 设置进度条的背景图片 我们把他放到屏幕下方的1/5处 CCSprite* loadbackimg=CCSprite::create("gmbg/lodingbg.png"); CC_BREAK_IF(!loadbackimg); loadbackimg->setPosition(ccp(getWinSize().width/2+getWinOrigin().x,getWinSize().height/5+getWinOrigin().y)); this->addChild(loadbackimg,1); // 添加进度条 CCSprite* loadimg=CCSprite::create("gmbg/longding.png"); CC_BREAK_IF(!loadimg); CCProgressTimer* pt = CCProgressTimer::create(loadimg); pt->setType(kCCProgressTimerTypeBar);// 设置成横向的 //可以看作是按矩形显示效果的进度条类型 pt->setMidpoint(ccp(0,0)); // 用来设定进度条横向前进的方向从左向右或是从右向左 pt->setBarChangeRate(ccp(1,0)); //重新设置坐标 float tex=getWinSize().width/2+getWinOrigin().x; float tey=getWinSize().height/5+getWinOrigin().y-5; pt->setPosition(ccp(tex,tey)); pt->setPercentage(0); this->addChild(pt,2,1); isRet=true; } while (0); return isRet;
回调函数的主要代码
- void LoadingLayer::loadCallBack(CCObject* ped){
- loadingNum++;
- CCProgressTimer* pt=(CCProgressTimer*)this->getChildByTag(1);
- float now=pt->getPercentage();
- pt->setPercentage(100/totalNum+now);
- if(loadingNum<totalNum){
- }else{
- // 加载完的时候跳转到响应的界面
- CCLOG("loading over");
- }
- }
void LoadingLayer::loadCallBack(CCObject* ped){ loadingNum++; CCProgressTimer* pt=(CCProgressTimer*)this->getChildByTag(1); float now=pt->getPercentage(); pt->setPercentage(100/totalNum+now); if(loadingNum<totalNum){ }else{ // 加载完的时候跳转到响应的界面 CCLOG("loading over"); } }
对于以上代码特别要主要 不要忽略两个特别重要的属性 那就是 loadingNum 和 totalNum 在执行 这个loading 界面的 这两个参数一定要初始化。 特别是对于 totalNum 这个参数 就是你要加载的图片的 个数
程序写到这里 基本就完成了一个简答的 loading 界面 收工 下面贴出 运行出来的界面
看完上面的代码有些同学可能会疑惑为什么我的 LoadingLayer 继承了 BaseLayer 其实BaseLayer 继承了 CCLayer 我只是我把一些比较通用的东西封装到 这个BaseLayer 中 方便在后面的程序中调用 在以后的程序中这个类可能会逐渐添加一些通用的属性或者方法。
到这里 我们的一个简单的 LoadingLayer 就OK 了 下一节 我将讲解当loading 完毕之后 跳进 游戏的开始 界面 和开始游戏界面的大家,希望大家耐心看。
附上源码连接地址 里面带图片资源 和class 两个 文件夹 覆盖新创建的项目的目录 即可出现 当前效果
相关推荐
nodejs010-nodejs-cryptiles-0.2.2-1.el6.centos.alt.noarch.rpm
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
基于麻雀搜索算法优化的深度置信网络(SSA-DBN)参数调整与数据分类预测——以隐藏层节点、迭代次数和学习率为优化目标的MATLAB实现,基于麻雀搜索算法优化深度置信网络(SSA-DBN)的数据分类预测 优化参数为隐藏层节点、迭代次数和学习率 利用交叉验证抑制过拟合问题 matlab代码, ,SSA-DBN; 参数优化; 隐藏层节点; 迭代次数; 学习率; 交叉验证; 过拟合抑制; MATLAB代码,基于SSA-DBN优化的数据分类预测方法:参数优化与过拟合抑制
BeTheme第一次发布于2014年5月21日,自那时以来,已有数以百万计的人下载了BeTheme,其评分为4.8。这个主题是WooCommerce支持的,在此帮助下,您可以制作一个电子商务网站,还可以制作博客、新闻和其他类型的网站。BeTheme 21.5.6 wordpress主题模板特点:放大器支撑多用途主题500+预制件演示单击演示安装移动友好型主题联络表格7支持自转滑块。
基于S7-200智能控制与组态王4x3界面的书架式堆垛立体车库系统设计与应用,基于S7-200和组态王4x3书架式堆垛式立体库立体车库 ,S7-200; 组态王4x3; 书架式堆垛式立体库; 立体车库,基于S7-200与组态王4x3的立体车库系统
1、文件内容:pykde4-akonadi-4.10.5-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/pykde4-akonadi-4.10.5-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
基于28379D的异步电机无速度传感器控制:MD500与MD500E滑模同步调制代码研究,各种代码md500代码,异步电机,基于28379D,带无速度传感器控制,参数辨识,同步调制等功能。 还有md500e代码,滑模无感代码,逆变整流代码 ,核心关键词:md500代码; 异步电机; 28379D; 无速度传感器控制; 参数辨识; 同步调制; md500e代码; 滑模无感控制; 逆变整流代码。,基于28379D的MD500电机异步控制系统与参数辨识软件
"可再生能源驱动的热电联供微网经济运行优化研究:基于具体文献的程序复现与MATLAB粒子群算法应用",含可再生能源的热电联供型微网经济运行优化 有具体文献 程序复现 MATLAB粒子群算法 ,核心关键词: 可再生能源; 热电联供型微网; 经济运行优化; 具体文献; 程序复现; MATLAB粒子群算法。,含可再能源热电联供型微网运行优化策略复现于特定文献中的MATLAB模型研究。
1、文件内容:pyserial-2.6-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/pyserial-2.6-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
finishBitmap.jpg
"英博尔控制器调速软件全面升级,引领行业新风尚",英博尔控制器调速软件全新 ,英博尔; 控制器; 调速软件; 全新,英博尔控制器调速软件全新升级
电机定子模态频率计算方法及公式在Excel表格中的应用,电机定子模态频率计算公式,公式法,exl表格 ,电机定子模态频率计算公式; 公式法; EXL表格,电机定子模态频率计算方法及公式法在Excel表格中的应用
一、项目简介 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 二、技术实现 jdk版本:1.8 及以上 ide工具:IDEA或者eclipse 数据库: mysql5.5及以上 后端:spring+springboot+mybatis+maven+mysql 前端: vue , css,js , elementui 三、系统功能 1、系统角色主要包括:管理员、用户 2、系统功能 主要功能包括: 用户登录注册 首页 个人中心 修改密码 个人信息 用户管理 管理员管理 问卷管理 题目管理 题目统计 问卷调查管理 新闻资讯管理 轮播图管理 问卷调查 新闻资讯 个人中心 问卷调查记录 后台管理 详见 https://flypeppa.blog.csdn.net/article/details/143189415
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
1、文件内容:pulseaudio-esound-compat-10.0-6.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/pulseaudio-esound-compat-10.0-6.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
一种基于Lifelogging视频的文本标签生成模型.pdf
MATLAB仿真:MIMO系统FLMS算法的优化与实现,一个mimo系统的flms算法的MATLAB仿真 ,Mimo系统; FLMS算法; MATLAB仿真,"MIMO系统FLMS算法MATLAB仿真"
"基于S7-200 PLC的组态王燃油锅炉控制系统:详解梯形图接线原理、IO分配及组态画面图解",基于S7-200 PLC和组态王燃油锅炉控制系统 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,S7-200 PLC; 组态王燃油锅炉控制; 梯形图接线图原理图; IO分配; 组态画面,基于S7-200 PLC的燃油锅炉控制系统原理图及IO分配解析
方便暖通工程师及板换用户了解艾普尔板式换热器选型计算,免费使用。