Cocos2dx 3.0 实战之—— 重写《超级马里奥》其七 加载界面的最终效果

Cocos2dx 3.0 实战之—— 重写《超级马里奥》其七 加载界面的最终效果,第1张

概述啥也不说了,这节的内容其实是在上节的基础上改的,直接上最终的源码。 LoadScene.h /** * Loadding场景的声明 */#ifndef __LOAD_SCENE_H__#define __LOAD_SCENE_H__#include "cocos2d.h"USING_NS_CC;/** * 定义一个LoadLayer类继承自Layer类 */class Lo

啥也不说了,这节的内容其实是在上节的基础上改的,直接上最终的源码。

LoadScene.h


/** * Loadding场景的声明 */#ifndef __LOAD_SCENE_H__#define __LOAD_SCENE_H__#include "cocos2d.h"USING_NS_CC;/** * 定义一个LoadLayer类继承自Layer类 */class LoadLayer : public Layer{public:	/**	 * 构造函数	 */	LoadLayer();	/**	 * 析构函数	 */	virtual ~LoadLayer();	/**	 * 创建当前场景并加入LoadLayer层	 */    static Scene* createScene();	/**	 * 初始化LoadLayer层	 */    virtual bool init();  	/**	 * 创建LoadLayer层	 */	CREATE_FUNC(LoadLayer);	/**	 *  加载完成的返回函数	 */	voID LoadingCallback(Ref* pSender);	/**	 * 预加载音乐资源	 */	voID preloadMusic();	/**	 * 加载图片资源	 */	voID loadImage();private:	/**	* 记录进度条的当前值	*/	int currentNumber;	/**	* 总资源数	*/	int totalNumber;	/**	 * 加载状态的资源	 */	Progresstimer *loadbar_loading;};#endif 

LoadScene.cpp
/** *  Loadding场景的实现 */#include "LoadScene.h"#include "VisibleRect.h"#include "SimpleAudioEngine.h"using namespace CocosDenshion;#define TOTAL_PIC_NUM 1 //图片资源数/** * 构造函数,一般用来初始化变量 */LoadLayer::LoadLayer() : currentNumber(0),totalNumber(TOTAL_PIC_NUM){}/** * 析构函数,一般用来释放内存 */LoadLayer::~LoadLayer(){}/** * 创建场景,加入LoadLayer层 */Scene* LoadLayer::createScene(){	Scene* scene = Scene::create();    	LoadLayer *layer = LoadLayer::create();    scene->addChild(layer);    return scene;}/** * 初始化 LoadLayer */bool LoadLayer::init(){    if (!Layer::init())    {        return false;    }	//加载资源	SpriteFrameCache *frameCache = SpriteFrameCache::getInstance();	frameCache->addSpriteFramesWithfile("imageResource.pList","imageResource.png");	//加入背景页	Sprite *bg = Sprite::createWithSpriteFramename("loading_bg.png");	bg->setposition(VisibleRect::center());	this->addChild(bg,10);	//加入加载中正常状态的精灵	Sprite *loadbar_nomal = Sprite::createWithSpriteFramename("loading_normal.png");	loadbar_nomal->setposition(VisibleRect::center());	this->addChild(loadbar_nomal,11);	//加入进度条	loadbar_loading = Progresstimer::create(Sprite::createWithSpriteFramename("loading_loading.png"));	//初始百分比	loadbar_loading->setPercentage(0.0f);	//坐标位置,一般是与上面的正常状态的位置一样的	loadbar_loading->setposition(VisibleRect::center());	//设置类型为bar	loadbar_loading->setType(Progresstimer::Type::bar);	//setbarChangeRate方法用来设置进度条变化方向的,如果不用变化的方向,则设置该方向为0,否则设置为1。所以(1,0)表示横方向,(0,1)表示纵方向。	loadbar_loading->setbarChangeRate(Point(0,1));	//setMIDpoint方法设置进度条的起始点,(0,y)表示最左边,(1,y)表示最右边,(x,1)表示最上面,(x,0)表示最下面。	loadbar_loading->setMIDpoint(Point(1,0));	//把loadbar_loading加入到场景中	this->addChild(loadbar_loading,12);	//预加载音乐	this->preloadMusic();	//加载图片资源	this->loadImage();    return true;}/** * 进度条控制 */voID LoadLayer::LoadingCallback(Ref* pSender){	++currentNumber;	int percent = (int)(((float)currentNumber / totalNumber) * 100);	Progressto *ptAction = Progressto::create(1.0f,percent);	loadbar_loading->runAction(ptAction);	if (currentNumber == totalNumber)	{		log("go to the next scene");		//加载完成去下一个场景	}}/** * 加载音乐资源 */voID LoadLayer::preloadMusic(){	//因为项目中暂时没有加入音乐资源,所以这里先空着,后续有音乐资源就一下面这张形式预加载音乐资源	//SimpleAudioEngine::getInstance()->preloadBackgroundMusic("音乐.mp3");}/** * 加载图片资源 */voID LoadLayer::loadImage(){	auto TexureCache = Director::getInstance()->getTextureCache();	TexureCache->addImageAsync("imageResource.png",CC_CALLBACK_1(LoadLayer::LoadingCallback,this));	//如果有第二条,第三条类似上面的语句,如:添加了image.png	//TexureCache->addImageAsync("image.png",this));}

这个加载界面的基本格式和效果基本就是这样,值得说明的是我的资源图片只有一张,而音频文件暂时没有加入,而且我也还没有写第二个界面,这里为了看效果就先省略了,现在看看运行的效果

总结

以上是内存溢出为你收集整理的Cocos2dx 3.0 实战之—— 重写《超级马里奥》其七 加载界面的最终效果全部内容,希望文章能够帮你解决Cocos2dx 3.0 实战之—— 重写《超级马里奥》其七 加载界面的最终效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1024953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存