常用操作
1.運行第一個情境
我們一般是在應用程式代理程式AppDelegate的applicationDidFinishLaunching:方法結尾處運行遊戲的第一個情境
[java] view
plaincopy
- [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]];
這裡的[HelloWorldLayer scene]返回的是一個CCScene對象
2.替換情境
[java] view
plaincopy
- [[CCDirector sharedDirector] replaceScene:scene];
這個方法會用新的情境替換舊的情境,cocos2d會釋放舊情境的記憶體,刪除舊情境中所有的節點,停止所有動作和訊息調度,因此我們不用手動釋放舊情境的記憶體
3.推入和彈出情境
我們知道可以用replaceScene:來運行一個新情境,但是會釋放掉舊情境的記憶體。有時候我們希望在不釋放舊情境記憶體的前提下運行一個新情境,這時候就要用到CCDirector的pushScene:和popScene兩個方法了。
1> 使用pushScene:方法推入一個新情境,新情境會層疊在舊情境的上面,但並沒有釋放舊情境的記憶體,舊情境繼續保留在記憶體中
[java] view
plaincopy
- [[CCDirector sharedDirector] pushScene:scene];
2> 使用popScene方法彈出最上層的情境並釋放其記憶體,使保留在記憶體中的舊情境重新顯示出來
[java] view
plaincopy
- [[CCDirector sharedDirector] popScene];
CCTransitionScene
上面介紹了情境的切換,不過都是瞬間完成的,有時候我們想在情境切換的時候有些過渡效果,即以動畫的形式切換情境,我們稱之為"情境過渡"。要想做情境過渡效果,就必須用CCTransitionScene的子類,CCTransitionScene本身繼承了CCScene,它包含了非常多的子類,每個子類都有不同的情境過渡效果,比如CCTransitionFade是淡入淡出效果,CCTransitionPageTurn是翻頁效果。
下面示範一個翻頁效果:
[java] view
plaincopy
- CCTransitionPageTurn *page = [CCTransitionPageTurn transitionWithDuration:0.5 scene:scene];
- [[CCDirector sharedDirector] replaceScene:page];
意思是在0.5秒的時間內使用翻頁效果從舊情境過渡到scene這個新情境,因為CCTransitionScene是CCScene的子類,所以可以作為replaceScene:的參數。
cocos2d中有非常多的過渡效果可以使用,都是CCTransitionScene的子類,類名一般都是以CCTransition開頭的。我就不在這裡一一介紹每個子類有什麼效果,也沒有必要,用到時自己再去查API吧。
注意:CCTransitionScene只能使用在replaceScene:和pushScene:的時候,在popScene彈出情境時是不能用這個過渡效果的
節點的生命週期
說到情境過渡,那就不得不說一下節點的生命週期,即一個節點從開始被添加到螢幕上 到 從螢幕中移除的過程,CCNode提供了相應的生命週期方法:
[java] view
plaincopy
- // 節點被添加到螢幕上 或者 重新顯示到螢幕上 時調用
- -(void) onEnter;
-
- // 調用完onEnter後就會調用此方法,如果使用了情境過渡效果,將在情境過渡完畢後才調用此方法
- -(void) onEnterTransitionDidFinish;
-
- // 節點從螢幕中移除 或者 暫時離開螢幕 時調用
- -(void) onExit;
- //這個方法較少用
-(void)onExitTransitionDidStart