woods at October 10th, 2011 15:58 — #1
A question about textureForKey.
Question code :
CCImage img = new CCImage;
CCTexture2D tex = CCTextureCache::sharedTextureCache()->addUIImage( img, “catImage” );
if( CCTextureCache::sharedTextureCache()->textureForKey( “catImage” ) )
> > // find
> > // oh…no
> > // it run here
textureForKey don’t find “catImage”.
maybe I use way is wrong ?
zhangbin at October 10th, 2011 21:19 — #2
Thanks for your feedback!
Yes, it’s a bug of engine! Issue #750 created for it.
The reason of this bug had been discussed in this topic:
And we only can fix this bug by modify the key with method CCFileUtil::fullPathFromRelativePath_ whenCCTextureCache::addUIImage()_ invoked.
zhangxm at October 12th, 2011 14:44 — #3
Woods Lin, you can add CCFileUtil::fullPathFromRelativePath() in CCTextureCache::addUIImage(), and do a test.
Share the result is better.
woods at October 13th, 2011 02:04 — #4
thanks for help me.
And test is ok, I can get the CCTexture2D object.
but the way isn’t my think result.
because I own one file call “imageObject.data”,then it own many images in the data.
so I do:
// save the memory
loadImageFile( “imageObject.data” );
// get image from 0 index
BYTE rawData = getImageFromIndex;
CCImageimg->initWithImageData( rawData, width*height, CCImage::kFmtRawData, width, height );
CCTexture2D* tex = CCTextureCache::sharedTextureCache()~~>addUIImage;
// get image from 1 index
BYTE rawData2 = getImageFromIndex;
CCImageimg2~~>initWithImageData( rawData2, width*height, CCImage::kFmtRawData, width, height );
CCTexture2D* tex = CCTextureCache::sharedTextureCache()->addUIImage( img2, “imageName_2” );
but now “imageName_1” and “imageName_2” can’t so use, i must name it call “imageObject.data”.
because these images separated to memory address, then they don’t have separated to many files in the hard disc.
May give me some suggestions?