读书人

cocos2d-x 官方例证 TextureCacheTest

发布时间: 2013-10-12 11:54:04 作者: rapoo

cocos2d-x 官方例子 TextureCacheTest 中的疑问
在官方例子中,分了以下几步来写:
1. 载入图片资源时:

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


2. 然后里面有个回调函数是loadingCallBack,这个回调函数计算loading时的一些数据并且创建了精灵,代码如下:
void TextureCacheTest::loadingCallBack(CCObject *obj)
{
++m_nNumberOfLoadedSprites;
char tmp[10];
sprintf(tmp,"%%%d", (int)(((float)m_nNumberOfLoadedSprites / m_nNumberOfSprites) * 100));
m_pLabelPercent->setString(tmp);

if (m_nNumberOfLoadedSprites == m_nNumberOfSprites)
{
this->removeChild(m_pLabelLoading, true);
this->removeChild(m_pLabelPercent, true);
addSprite();
}
}


3. 最后addSprite()函数中创建精灵的方法是这样的:
CCSprite *bg = CCSprite::create("Images/HelloWorld.png");


感觉最后的这个create方法和一开始的CCTextureCache没有关系,参数依然是文件的路径。而我在网上搜到的一些方法却是这样的:
CCTexture2D* cache = CCTextureCache::sharedTextureCache()->addImage("player.png");
...........
CCSprite* sprite = CCSprite::spriteWithTexture(cache);
addChild(sprite);
感觉这样才有关联,但是上面的代码又用的是spriteWithTexture而不是create,就有点搞不懂了。

我猜是不是CCSprite *bg = CCSprite::create("Images/HelloWorld.png")这句代码中的create要现在内存池中找是否已经用CCTextureCache载入了相同的图片,如果载入了就直接用,没载入就重新在资源文件里面载。

恳请大神们解答! cocos2d-x C++ cocos2d
[解决办法]
我猜是不是CCSprite *bg = CCSprite::create("Images/HelloWorld.png")这句代码中的create要现在内存池中找是否已经用CCTextureCache载入了相同的图片,如果载入了就直接用,没载入就重新在资源文件里面载。

是的。

读书人网 >C++

热点推荐