2011-01-12 74 views
0

我正在使用cocos2d,我想知道如何在用戶按下按鈕從我的pauseLayer場景轉到我的設置場景之前檢測用戶最後一次拍攝的場景。我需要知道,因爲有2種方式可以訪問設置場景,所以我需要一個特殊的後退按鈕返回到用戶上一次的任何場景。另外,我可以有1個後退按鈕,它有一個方法可以返回到最後一個場景,而不是任何特定的場景。我會如何去做這件事?如何檢測用戶上次登錄的場景?

回答

0

編輯:根據您的代碼示例,我建議以下內容,由於缺少測試設備,可能無法正常工作:P。

首先,在Settings類中添加一個名爲+(id)nodeFromSource:(bool)bPauseMenu的方法。

+(id)nodeFromSource:(bool)bPauseMenu 
{ 
    if((self = [self node]) 
    { 
    m_bPauseMenu = bPauseMenu; 
    } 
    return self; 
} 

Add bool m_bPauseMenu;在類定義中。

在你設置指定的後退按鈕,執行下面的代碼功能:

//for example... 
-(void)backButtonPressed:(id)sender 
{ 
    if(m_bPauseMenu) 
    { 
    [[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[pauseLayer node]]]; 
    } 
    else 
    { 
    //trigger a replaceScene back to the other menu here 
    //(MyOtherLayer is the classname of your non-pause-menu layer that you came from... 
    [[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[MyOtherLayer node]]]; 
    } 
} 

變化pauseLayer調用 - (空)設置:(ID)發送到:

[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[Settings nodeFromSource:true]]]; 

而且無論你的其他呼叫,顯示設置層,使它說:

[[CCDirector sharedDirector] replaceScene:[CCTransitionFlipAngular transitionWithDuration:1.2f scene:[Settings nodeFromSource:false]]]; 

我之所以稱它爲nodeFromSource,這樣總有一天你可以用某種引用來替換bool,並讓你的圖層知道它們來自的圖層。

我希望這是按原樣工作的。我已經過了幾次,不能看到任何明顯的錯誤...

+0

感謝您的答案,但我有點困惑你的代碼。在代碼的第二部分,我收到一條警告,提示「否」-initWithSource:「找到方法」。我知道我必須製作這個方法/參數,但我該怎麼做? 另外,通過在pauseLayer中將cameFromPauseLayer設置爲true並且在Settings中設置爲false,您是什麼意思? 在替換場景,我應該把它放在設置,所以後退按鈕回到pauseLayer?而且我也收到警告「'pauseLayer'可能不會響應'+ sceneWithSource:'。 對不起,我只是主要不知道如何設置方法 – Joethemonkey101 2011-01-12 17:18:33

相關問題