cocos2d 最初に呼ばれるシーンを設定

シーンの呼び出し

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]]];
}

ビルドして実行した後、画像が出ていれば成功

cocos2d016

※AppDeglateの後に呼び出す場合

AppDelegate.mファイルにてSceneの呼び出し部分を編集する

-(void) directorDidReshapeProjection:(CCDirector *)director
{
  if(director.runningScene == nil)
  {
    // 呼びたいシーンを記述する
    [director runWithScene:[SampleLayer scene]];
  }
}

Comments are closed.