シーンの呼び出し
cocos2dで新規プロジェクトを作成した時
AppDelegate→IntoroLayer→HelloWorldLayer
の順番に呼ばれる様になっている。
これを新しく作成したファイル(SampleLayer)で
AppDelegate→IntoroLayer→SampleLayer
の順番に呼ぶようにする。
・ファイルを追加(ここではSampleLayer)する。
■サンプルコード
#import <Foundation/Foundation.h> #import "cocos2d.h" @interface SampleLayer : CCLayer { } +(CCScene *) scene; @end
#import "SampleLayer.h" @implementation SampleLayer /** * * シーン取得 * **/ +(CCScene *) scene { // シーン生成 CCScene *scene = [CCScene node]; // レイヤー生成 SampleLayer *layer = [SampleLayer node]; // シーンにレイヤーを追加 [scene addChild:layer]; // シーンを返す return scene; } /** * * 初期処理 * **/ -(id) init { if(self = [super init]) { // 画面のサイズを取得 CGSize win_size = [[CCDirector sharedDirector] winSize]; // 画像スプライト生成 CCSprite *sprite = [CCSprite spriteWithFile:@"image.png"]; // 座標を設定 sprite.position = ccp(win_size.width / 2, win_size.height / 2); // 画像スプライトを追加 [self addChild:sprite]; } return self; } @end
IntroLayer.mファイルにてreplaceSceneの部分を編集する。
-(void) onEnter { [super onEnter]; // 呼びたいシーンを記述する [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[SampleLayer scene]]]; }
ビルドして実行した後、画像が出ていれば成功
※AppDeglateの後に呼び出す場合
AppDelegate.mファイルにてSceneの呼び出し部分を編集する
-(void) directorDidReshapeProjection:(CCDirector *)director { if(director.runningScene == nil) { // 呼びたいシーンを記述する [director runWithScene:[SampleLayer scene]]; } }