2014-02-05 73 views
0

嘿夥計我一直在努力如下。我得到2層,一個用於控制,另一個用於遊戲。問題在於,當我從控制圖層中重新啓動一個函數以重新啓動遊戲時,遊戲被阻塞(遊戲的場景刷新並顯示,但無法控制)。不知道問題出在哪裏。刷新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

好吧,那麼也許你要麼不斷地調用restartScene(將解釋「陷入困境」的問題)或前一幕沒有dealloc或應用程序簡單地墜毀,但由於某種原因Xcode沒有進入前臺顯示錯誤 – LearnCocos2D

+0

我想通了遊戲玩家不斷調用它的init()函數。來自gamelayer的instanceOfGameScene以某種方式變爲空,但我不知道爲什麼。當我把所有東西都放到一個圖層中時,一切正常,但我不認爲這是推薦的。 – user3201493