cocos2d-x 三(图片预加载与进度条)

在做游戏时,会用于很多和图片资源,包括角色,动画,纹理贴图……为了减少GPU和CPU的缓存占用以及图片的重复利用,在游戏开始时,都会预加载这些资源进入缓存,在cocos2d-x里用的是CCTextureCache这个类。其实,在cocos2d-x自带的TestCpp里有对应的例子,在里面用的是:

addImageAsync(const char *path, CCObject *target, SEL_CallFuncO selector);  


CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_01.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));  

这个方法通过图片的路径path,加载入target如:某个scene,当这个图片加载完成后,会调用一个回调函数selector,而这个回调函数便可以用于更新图片数据加载的总进度。关于纹理的介绍推荐一篇文章:http://www.oschina.net/question/565065_79823

进度条在网上的教程已经介绍得很清楚了,只是最近更新的版本重写了代码,只保留了两种进度条显示的基础类型,但是在引用这两种基础类型时,通过设置进度条的参数,还是可以变换出更多的显示效果的,这些效果在TestCPP中的ActionsProgressTest可以完全看到,使用的CCProgressTimer,下面使用的就是横向进度条的显示代码:

 

CCProgressTimer *left = CCProgressTimer::create(CCSprite::create(s_pPathSister1));
    left->setType(kCCProgressTimerTypeBar);
    //    Setup for a bar starting from the left since the midpoint is 0 for the x
    left->setMidpoint(ccp(0,0));
    //    Setup for a horizontal bar since the bar change rate is 0 for y meaning no vertical change
    left->setBarChangeRate(ccp(1, 0));
    //用来设置进度条的进度
    left->setPercentage(20);
    addChild(left);
    left->setPosition(ccp(100, s.height/2));

setType(kCCProgressTimerTypeBar);

用来设定进度条的显示类型

kCCProgressTimerTypeBar

可以看作是按矩形显示效果的进度条类型

setMidpoint

用来设定进度条横向前进的方向从左向右或是从右向左

setBarChangeRate

用来设置进度条增长按横向或是按纵向增长

最后,只要把设置进度条的方法写到回调函数中便可即时更新加载资源时进度条的显示进度。

另一个显示效果是圆周效果的进度条显示kCCProgressTimerTypeRadial,可以通过setReverseProgress(true);方法来设定按逆时针显示进度,False则为顺时针显示。