Я написал метод, целью которого является загрузка следующего уровня в игре.Он находит индекс уровня, загружает его из загрузчика уровней (класс, который я написал), создает слой, содержащий этот уровень, а затем информирует сцену о переходе между новым и старым слоями уровня.В настоящее время спрайт игрока становится невидимым, поэтому во время перехода нет двух игроков.
Мы столкнулись с проблемой, когда иногда игрок становится невидимым, но переход не происходит.После долгих поисков я обнаружил, что метод не завершает работу, даже если в методе нет возвратов или других вызовов.
Метод (как сейчас с входами в систему)чтобы следить за происходящим):
if([owningScene mayChangeLayer])
{
NSLog(@"May change layer");
levelFinished = YES;
NSLog(@"Level marked as finished");
[carver setVisible:NO];
NSLog(@"Carver hidden");
GameState *state = [GameState sharedGameState];
NSLog(@"game state loaded");
state.screenXOffset += xOffset;
state.screenYOffset += yOffset;
NSLog(@"offset: %d, %d", state.screenXOffset, state.screenYOffset);
GameLevel *aLevel = [loader getLevelAtXOffset:state.screenXOffset
atYOffset:state.screenYOffset];
NSLog(@"loaded level %@", aLevel);
GameLevelLayer *layer = [[GameLevelLayer alloc] initWithLevel:aLevel
withOwningScene:owningScene
withLevelLoader:loader
withHud:hud
showTitle:NO
startTileIndex:startIndex];
NSLog(@"Got layer %@", layer);
[owningScene replaceLayer:layer xMove:xOffset yMove:yOffset];
[layer release];
NSLog(@"Done");
Log messages:
2011-01-24 21:38:03.541 Squirrel[14659:307] May change layer
2011-01-24 21:38:03.544 Squirrel[14659:307] Level marked as finished
2011-01-24 21:38:03.545 Squirrel[14659:307] Carver hidden
2011-01-24 21:38:03.547 Squirrel[14659:307] game state loaded
2011-01-24 21:38:03.550 Squirrel[14659:307] offset: 4, -22
Похоже, что код выходит из GameLevelLayer * layer = ..., после этого сообщения журнала не появляются, но, как вы можете видеть, они явнонет выхода в коде после этой точки.Любая идея, что может быть причиной этой проблемы?
Заранее спасибо!-Stephen