延續之前在 CCScene 中加入單張影像的方法文章中的設定,該程式中只有一個場景 CCScene,現在我們要製作另一個場景,並在這兩個場景之間進行簡單的轉換(過場),請看以下程式碼。
首先是先建立一個全新的場景,作法是專案上點擊滑鼠右鍵選擇 New File,找到 CCNode class 然後新增一個 CCNode Subclass(CCScene、CCLayer 和 CCSprite 都是繼承此類別)並命名為 NextScene。
網路上有些文章會希望你將由繼承 CCNode 類別改成繼承 CCScene 類別,目的只是為了方便分辨所建立的物件,其實不管繼承哪一個類別都不會影響之後的操作。
緊接著我們要替剛剛建立的 NextScene 物件補上建構式和解構式,其程式碼如下。
NextScene.m
- (ImageLayer *)init {
if ((self=[super init])) {
//取得整個畫面的大小
CGSize screenSize = [CCDirector sharedDirector].winSize;
//製作一張影像
CCSprite *logoSprite = [CCSprite spriteWithFile:@"Landspace.png"];
//調整影像位置
logoSprite.position = ccp(screenSize.width / 2,screenSize.height / 2);
//調整大小為原來的一半
logoSprite.scale = 0.5;
//加入影像
[self addChild: logoSprite];
}
return self;
}
- (void)dealloc {
[super dealloc];
}
建構式和解構是都和原先的 ImageLayer 差不多,只是將顯示影像的大小改成原來的一半,以表示真的有換到下一個場景。接下來回到 ImageLayer.m 檔,補上 #import 並修改一下建構式,使它在一定秒數內進行場景的切換。
#import "NextLayer.h"
ImageLayer.m
- (ImageLayer *) init {
if ((self=[super init])) {
CGSize screenSize = [CCDirector sharedDirector].winSize;
CCSprite *logoSprite = [CCSprite spriteWithFile:@"Landspace.png"];
logoSprite.position = ccp(screenSize.width / 2,screenSize.height / 2);
[self addChild: logoSprite];
//五秒後呼叫goNextLayer:方法
[self schedule:@selector(goNextLayer:) interval:5.00];
}
return self;
}
- (void)goNextLayer:(ccTime)t {
//切換到NextScene
[[CCDirector sharedDirector] replaceScene: [NextScene node]];
}
程式在執行之後,原來的場景經過一定秒數就會被 CCDirector 切換到 NextScene,也就是我們所設定的第二個場景。
沒有留言:
張貼留言