Я написал несколько классов для создания фона с эффектом параллакса, который содержит землю, холмы и облака. Каждый объект дублируется один раз, и это позволяет мне создавать бесконечный цикл с землей и т. Д. Проблема заключается в использовании CCSpriteBatchNode и 12 x PNG 32-битных текстур с прибл. размер 600px на 200px замедляет мой FPS с 60 до 30. Я читал, что использование CCSpriteBatchNode показывает большие улучшения в производительности, но я не могу их воспроизвести.
http://www.learn -cocos2d.com / 2011/09 / cocos2d-SpriteBatch эффективность-тест /
Как мне ускорить процесс?
EDIT:
Запуск его на моем iPhone дает мне 60 FPS, но он показывает 30 FPS в симуляторе: S
Вот код, если он помогает, в этом нет ничего синтаксически неправильного:
batch = [CCSpriteBatchNode batchNodeWithFile:@"parallax.png"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"parallax.plist"];
[self addChild:batch];
float screenHeight = [CCUtil screenSize].height;
float screenWidth = [CCUtil screenSize].width;
CCSprite *sky = [CCSprite spriteWithSpriteFrameName:@"sky.png"];
sky.anchorPoint = ccp(0,0);
[batch addChild:sky];
CGPoint speedCloudSlow = ccp(0.08f, 0.002f);
CGPoint speedCloudFast = ccp(0.15f, 0.006f);
CCSprite *clouds1 = [CCSprite spriteWithSpriteFrameName:@"clouds1.png"];
CCSprite *clouds2 = [CCSprite spriteWithSpriteFrameName:@"clouds2.png"];
CCSprite *clouds3 = [CCSprite spriteWithSpriteFrameName:@"clouds3.png"];
CCSprite *clouds4 = [CCSprite spriteWithSpriteFrameName:@"clouds4.png"];
[batch addChild:clouds1];
[batch addChild:clouds2];
[batch addChild:clouds3];
[batch addChild:clouds4];
CCSprite *land1 = [CCSprite spriteWithSpriteFrameName:@"land.png"];
CCSprite *land2 = [CCSprite spriteWithSpriteFrameName:@"land.png"];
CCSprite *landBrown1 = [CCSprite spriteWithSpriteFrameName:@"land_brown.png"];
CCSprite *landBrown2 = [CCSprite spriteWithSpriteFrameName:@"land_brown.png"];
CCSprite *landDark1 = [CCSprite spriteWithSpriteFrameName:@"land_dark.png"];
CCSprite *landDark2 = [CCSprite spriteWithSpriteFrameName:@"land_dark.png"];
CCSprite *ground1 = [CCSprite spriteWithSpriteFrameName:@"ground.png"];
CCSprite *ground2 = [CCSprite spriteWithSpriteFrameName:@"ground.png"];
[batch addChild:land1];
[batch addChild:land2];
[batch addChild:landBrown1];
[batch addChild:landBrown2];
[batch addChild:landDark1];
[batch addChild:landDark2];
[batch addChild:ground1];
[batch addChild:ground2];