メニュー作成
CCMenuを使ってゲームのタイトル画面みたいなシーンを作る
■CCMenu
メニュー生成の流れ ・CCMenuItemオブジェクトでメニュー内容を定義 ・メニューをタグ付けする(必要であれば) ・メニューを垂直or平行方向のどちらかに設定 ・設置場所を設定 ・addChildでメニューを追加
■サンプルコード
#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]) { // 操作メニュー表示 [self setControlPanel]; } return self; } /** * * 操作パネル表示 * **/ -(void) setControlPanel { // メニュー生成(Start) CCMenuItemFont *item_1 = [CCMenuItemFont itemWithString:@"Start" // pushActionメソッドを呼ぶ target:self selector:@selector(pushAction:) ]; // メニュー生成(Continue) CCMenuItemFont *item_2 = [CCMenuItemFont itemWithString:@"Continue" // pushActionメソッドを呼ぶ target:self selector:@selector(pushAction:) ]; // メニュー生成(Option) CCMenuItemFont *item_3 = [CCMenuItemFont itemWithString:@"Option" // メソッドを呼ばずにそのまま処理を記述することも可能 block:^(id sender) { // 設定画面にシーン切り替え CCLOG(@"Tap: Option"); // CCTransitionFlipX *trans = [CCTransitionFlipX transitionWithDuration:1.0 scene:[Option scene]]; // [[CCDirector sharedDirector] replaceScene:trans]; } ]; // メニュー生成(Exit) CCMenuItemFont *item_4 = [CCMenuItemFont itemWithString:@"Exit" // pushActionメソッドを呼ぶ target:self selector:@selector(pushAction:) ]; // 各メニューをタグ付けする item_1.tag = 1; item_2.tag = 2; item_4.tag = 4; // CCMenuを生成 CCMenu *menu = [CCMenu menuWithItems: item_1, item_2, item_3, item_4, nil ]; // 垂直方向に20ポイント間隔に整列 [menu alignItemsVerticallyWithPadding:20]; // 画面サイズを取得 CGSize win_size = [[CCDirector sharedDirector] winSize]; // 座標を設定 [menu setPosition:ccp(win_size.width / 2, win_size.height / 2)]; // メニューを追加 [self addChild:menu]; } /** * * メニュー押下処理 * **/ -(void) pushAction:(id) sender { // タグ情報を元にどのボタンが押下されたか判定 switch([sender tag]) { case 1: // 開始シーンに切り替え CCLOG(@"Tap: Start"); // CCTransitionFlipX *trans = [CCTransitionFlipX transitionWithDuration:1.0 scene:[GameLayer scene]]; // [[CCDirector sharedDirector] replaceScene:trans]; break; case 2: // 続きのシーンに切り替え CCLOG(@"Tap: Continue"); // CCTransitionFlipX *trans = [CCTransitionFlipX transitionWithDuration:1.0 scene:[GameLayer scene]]; // [[CCDirector sharedDirector] replaceScene:trans]; break; case 4: // アプリ終了 CCLOG(@"Tap: Exit"); break; default: CCLOG(@"error..."); break; } } @end