异步加载


以超级玛丽为例:

资源加载进度条CCProgressTimer 


用法如下:

	CCSprite *spr = CCSprite::create("sliderProgress.png");
	CCProgressTimer *timer = CCProgressTimer::create(spr);
	addChild(timer);
	timer->setPosition(ccp(winSize.width/2, winSize.height/2));
	//默认为扇形的,这里设置为进度为条形。
	timer->setType(kCCProgressTimerTypeBar);
	//x 和y 均为[0,1]的数值表示,表示进度起始点。比如ccp(0,0)左下角,ccp(1,1)右上角。
	timer->setMidpoint(ccp(0, 0.5));
	//x 和y 均为[0,1]的数值表示,表示水平方向和坚直方向的进度。比如ccp(0,1)表示只有y 轴方向有进度。
	timer->setBarChangeRate(ccp(1, 0));
	//设置显示的百分比,实际用法可加载一个文件百分比加一,这样达到目的。
	timer->setPercentage(100);

因为超级玛丽用的资源比较多,最好加一个进度条

1:实际比如加载一个图片让百分比前进一点,这样的话会显得比较土,最好封装个进度条类:

class ProgresssBar:public CCLayer

因为进度条后面添加背景好看些,否则一片漆黑,所以最好继承自CClayer:

2:先计算出总共要加载的图片和音乐数量

_bar->setPercentage((i + 1) * 100.0f / totalfile));

3:异步加载 addImageAsync

异步加载:我告诉你一个事,但我不等你做完,我继续往后做自己的事情,你做完了通知我。

	for (int i = 0; i < _totalfile; ++i)
	{
		CCTextureCache::sharedTextureCache()->addImageAsync(picfiles[i], this, callfuncO_selector(LayerGame::loadImageCallBack));
	}

注意addImage ---->addImageAsync 百度查一下这个异步加载函数。

异步加载的回调函数loadImageCallBack里:

a:设置进度(即setPercentage)

b:去判断如果检查加载的文件等于总的文件(其实也可以启用一个定时器去检查):

    1:删去bar

     2:真正的开始游戏:

           加载地图


异步加载流程图:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值