Использование шаблона SpriteKit, задержка жеста смахивания между сценами

Я создаю приложение с помощью Spritekit, я использую UISwipeGestureRecognizer для переключения между сценами.

Теперь в моем приложении будет много сцен, основанных на одном и том же коде, и жест смахивания работает хорошо, за исключением того, что когда я добавляю третью или четвертую сцену, у меня возникает много задержек смахивания.

Я не уверен, связано ли это с тем, что я использую слишком много сцен, или с тем, что каждая сцена использует фоновое изображение.

Свайп работает, но со значительными задержками.

Я единственный, кто получает эту проблему? Кто-нибудь нашел обходной путь для такого отставания?

Любая помощь будет оценена по достоинству.

Вот пример кода, используемого для 1 сцены.

Спасибо

#import "Ep1Slide1.h"
#import "Ep1Slide2.h"

-(id)initWithSize:(CGSize)size {
  if (self = [super initWithSize:size]) {

       self.backgroundColor = [SKColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
       CGImageRef backgroundCGImage = [UIImage imageNamed:@"backgroundImage1"].CGImage;
       SKTexture *backgroundTexture = [SKTexture textureWithCGImage:backgroundCGImage];
       SKSpriteNode *someNode = [SKSpriteNode spriteNodeWithTexture:backgroundTexture];
       someNode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
       [someNode setScale:0.5f];
       [self addChild:someNode];
       }
     return self;
   }

- (void)didMoveToView:(SKView *)view{

       UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action: @selector(leftFlip:)];
       [leftSwipe setDirection:UISwipeGestureRecognizerDirectionLeft];
       [self.view addGestureRecognizer:leftSwipe];
   }


- (void)leftFlip:(id)sender{
       SKView * skView = (SKView *)self.view;
       SKScene * scene = [Ep1Slide2 sceneWithSize:skView.bounds.size];
       scene.scaleMode = SKSceneScaleModeAspectFill;
       [skView presentScene:scene transition:[SKTransition pushWithDirection:SKTransitionDirectionLeft duration:1.2]];
   }

person PhilBlais    schedule 04.06.2014    source источник
comment
хм, есть ли причина, по которой вы не создаете спрайт напрямую из изображения? Путь uiimage-›cgimage-›texture добавляет много ненужных накладных расходов, и это означает, что вы не используете атлас текстур, который можно было бы предварительно загрузить, чтобы избежать накладных расходов на загрузку изображения при каждом изменении сцены.   -  person LearnCocos2D    schedule 04.06.2014
comment
Я бы подумал о предварительной загрузке текстур, которые вы используете в новой сцене. Загрузка текстур будет задерживать презентацию новой сцены, так что лучше всего сделать это перед презентацией новой сцены! Я бы посоветовал вам взглянуть на мой ответ на этот вопрос ( которые я считаю связанными, если не одной и той же проблемой).   -  person CloakedEddy    schedule 05.06.2014
comment
Я пытался загрузить изображение напрямую, но таким образом я получаю лучшее управление памятью. Но несмотря на это, отставание / замедление также происходит. Я попробую предварительно загрузить, звучит как очень хорошая идея. атлас текстур ограничен 2048 x 2048, что не очень помогает в моем случае.   -  person PhilBlais    schedule 05.06.2014