2014-02-05 2 views
0

Привет, ребята, я работаю следующим образом. Я получаю 2 слоя, один для контроля, а другой - для игрового материала. Проблема в том, что игра застряла (сцена игры обновлена ​​и показана, но она вышла из-под контроля), когда я trigerred функцию для перезапуска с моего уровня управления. Не знаю, где проблема.Обновите сцену игры в cocos2d

//restart function from input layer 

...... 

-(id) init 
{ 
    if ((self = [super init])) 
    {......} 
    return self; 
} 

...... 

-(void)restart 
{ 
    GameScene* game = [GameScene sharedGameScene]; 
    [game restartScene]; 
} 

//gameLayer 

...... 

static GameScene* instanceOfGameScene; 

@implementation GameScene 

+(GameScene*) sharedGameScene 
{ 
    if(instanceOfGameScene == nil) 
     instanceOfGameScene = [[self alloc]init]; 
    return instanceOfGameScene; 
} 

+(id) scene 
{ 
    CCScene* scene = [CCScene node]; 
    GameScene* layer = [GameScene node]; 
    [scene addChild:layer z:0]; 

    InputLayer* inputLayer = [InputLayer node]; 
    [scene addChild:inputLayer z:1]; 
    return scene; 
} 

-(void) restartScene 
{ 
    CCScene * newScene = [GameScene scene]; 
    [[CCDirector sharedDirector] replaceScene:\ 
       [CCTransitionFade transitionWithDuration:0.7f scene:newScene]]; 
} 

...... 

ответ

0

[scene:newScene] не кажется, действует синтаксис ObjC, делает это даже компилировать?

Во всяком случае, вы будете использовать newScene там и ничего другого:

-(void) restartScene 
{ 
    CCScene * newScene = [GameScene scene]; 
    [[CCDirector sharedDirector] replaceScene:newScene]; 
} 
+0

Ой, SRY для моего плохого типа. Я изменил код выше. Он должен быть «[[CCDirector sharedDirector] replaceScene: [CCTransitionFade transitionWithDuration: 0.7f scene: newScene]] '. – user3201493

+0

хорошо, тогда, возможно, вы либо будете постоянно перезапускать сессию (объясните проблему «застревание»), либо предыдущая сцена не удалила или, возможно, приложение просто разбилось, но по какой-либо причине Xcode не выходил на передний план, чтобы отобразить ошибку – LearnCocos2D

+0

, я понял что игра утихает, потому что игровой сервер продолжает называть init(). Экземпляр instanceOfGameScene из gamelayer каким-то образом становится нулевым, но я понятия не имею, почему. Все отлично работает, когда я помещаю все в один слой, но я не думаю, что это рекомендуется. – user3201493

Смежные вопросы