メニュー作成
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

