假设我需要使用相同图像的多个CCSprite
。我可以想到以下两个解决方案:
图片位于单独的文件“bg.png”
中CCSprite *image1 = [CCSprite spriteWithFile:@"bg.png"];
CCSprite *image2 = [CCSprite spriteWithFile:@"bg.png"];
图片位于spritesheet“bg_sheet.png”
中[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"bg_sheet.png"];
然后
CCSprite *image1 = [CCSprite spriteWithSpriteFrameName:@"bg.png"];
CCSprite *image2 = [CCSprite spriteWithSpriteFrameName:@"bg.png"];
我的问题是:
答案 0 :(得分:2)
你不对。在这两种情况下,图像将仅被放入存储器一次。您可以查看spriteWithFile:
代码。它试图在精灵帧缓存中找到精灵帧,并且只有在找不到所需的帧时才加载它。
使用spritesheets有助于节省内存。例如,对于尺寸为129x129的图像,将创建大小为256x256的纹理。但你可以在一个spritesheet中添加许多这样的图像,只会创建一个大的纹理(我的意思是,它将有spritesheet 1024x1024或2048x2048,只有一个纹理具有相同的大小)。