@interface HelloWorldLayer : CCLayer <GKAchievementViewControllerDelegate, GKLeaderboardViewControllerDelegate>
{
CCLabelTTF *_label;
CCMenuItem *_plusItem;
CCMenuItem *_minusItem;
}
// returns a CCScene that contains the HelloWorldLayer as the only child
+(CCScene *) scene;
@end
#import "CCRadioMenu.h"
@implementation HelloWorldLayer
+(CCScene *) scene
{
CCScene *scene = [CCScene node];
HelloWorldLayer *layer = [HelloWorldLayer node];
[scene addChild: layer];
return scene;
}
-(id) init
{
if( (self=[super init]) ) {
CGSize winSize = [[CCDirector sharedDirector]winSize];
_label = [[CCLabelTTF labelWithString:@"最后按钮:空" dimensions:CGSizeMake(320,50) hAlignment:UITextAlignmentCenter fontName:@"Arial" fontSize:32.0]retain];
_label.position = ccp(winSize.width/2,winSize.height-(_label.contentSize.height/2));
[self addChild:_label];
//添加按钮,时间点击后,更改标题名称
CCMenuItem *startMenuItem = [CCMenuItemImage itemWithNormalImage:@"ButtonStar.png" selectedImage:@"ButtonStarSet.png" target:self selector:@selector(startButtonTapped:)];
startMenuItem.position = ccp(60,60);
CCMenu *startMenu = [CCMenu menuWithItems:startMenuItem, nil];
startMenu.position = CGPointZero;
[self addChild:startMenu];
//弄两个按钮,不设定事件
_plusItem = [[CCMenuItemImage itemWithNormalImage:@"ButtonPlus.png" selectedImage:@"ButtonPlusSel.png" target:nil selector:nil]retain];
_minusItem = [[CCMenuItemImage itemWithNormalImage:@"ButtonMinus.png"
selectedImage:@"ButtonMinusSel.png" target:nil selector:nil] retain];
//两个按钮放到一个item中,设定事件
CCMenuItemToggle *toggleItem = [CCMenuItemToggle itemWithTarget:self selector:@selector(plusMinusButtonTapped:) items:_plusItem,_minusItem,_minusItem, nil];
//把item加到menu中,点一下会按照顺序切换按钮
CCMenu *toggleMenu = [CCMenu menuWithItems:toggleItem, nil];
toggleMenu.position = ccp(60, 120);
[self addChild:toggleMenu];
//再弄三个按钮
CCMenuItem *menuItem1 = [CCMenuItemImage itemWithNormalImage:@"Button1.png"
selectedImage:@"Button1Sel.png" target:self selector:@selector(button1Tapped:)];
CCMenuItem *menuItem2 = [CCMenuItemImage itemWithNormalImage:@"Button2.png"
selectedImage:@"Button2Sel.png" target:self selector:@selector(button2Tapped:)];
CCMenuItem *menuItem3 = [CCMenuItemImage itemWithNormalImage:@"Button3.png"
selectedImage:@"Button3Sel.png" target:self selector:@selector(button3Tapped:)];
//加到一组
CCRadioMenu *radioMenu = [CCRadioMenu menuWithItems:menuItem1, menuItem2, menuItem3, nil];
radioMenu.position = ccp(120, 180);
//横排显示
[radioMenu alignItemsHorizontally];
//设置默认选中
[radioMenu setSelectedItem_:menuItem1];
[menuItem1 selected];
[self addChild:radioMenu];
}
return self;
}
- (void)button1Tapped:(id)sender {
[_label setString:@"Last button: 1"];
}
- (void)button2Tapped:(id)sender {
[_label setString:@"Last button: 2"];
}
- (void)button3Tapped:(id)sender {
[_label setString:@"Last button: 3"];
}
- (void)plusMinusButtonTapped:(id)sender {
CCMenuItemToggle *toggleItem = (CCMenuItemToggle *)sender;
if (toggleItem.selectedItem == _plusItem) {
[_label setString:@"Visible button: +"];
} else if (toggleItem.selectedItem == _minusItem) {
[_label setString:@"Visible button: -"];
}
}
- (void)startButtonTapped:(id)sender {
[_label setString:@"你想干什么: 点这个"];
}
- (void) dealloc
{
[_plusItem release];
_plusItem = nil;
[_minusItem release];
_minusItem = nil;
[_label release];
_label = nil;
[super dealloc];
}
#pragma mark GameKit delegate
-(void) achievementViewControllerDidFinish:(GKAchievementViewController *)viewController
{
AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
[[app navController] dismissModalViewControllerAnimated:YES];
}
-(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController
{
AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
[[app navController] dismissModalViewControllerAnimated:YES];
}
@end
----------------------------------------
#import "cocos2d.h"
@interface CCRadioMenu : CCMenu {
CCMenuItem *_curHighlighted;
}
- (void)setSelectedItem_:(CCMenuItem *)item;
@end
@implementation CCRadioMenu
- (void)setSelectedItem_:(CCMenuItem *)item {
[selectedItem_ unselected];
selectedItem_ = item;
}
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
if ( state_ != kCCMenuStateWaiting ) return NO;
CCMenuItem *curSelection = [self itemForTouch:touch];
[curSelection selected];
_curHighlighted = curSelection;
if (_curHighlighted) {
if (selectedItem_ != curSelection) {
[selectedItem_ unselected];
}
state_ = kCCMenuStateTrackingTouch;
return YES;
}
return NO;
}
- (void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
NSAssert(state_ == kCCMenuStateTrackingTouch, @"[Menu ccTouchEnded] -- invalid state");
CCMenuItem *curSelection = [self itemForTouch:touch];
if (curSelection != _curHighlighted && curSelection != nil) {
[selectedItem_ selected];
[_curHighlighted unselected];
_curHighlighted = nil;
state_ = kCCMenuStateWaiting;
return;
}
selectedItem_ = _curHighlighted;
[_curHighlighted activate];
_curHighlighted = nil;
state_ = kCCMenuStateWaiting;
}
- (void) ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event {
NSAssert(state_ == kCCMenuStateTrackingTouch, @"[Menu ccTouchCancelled] -- invalid state");
[selectedItem_ selected];
[_curHighlighted unselected];
_curHighlighted = nil;
state_ = kCCMenuStateWaiting;
}
-(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
NSAssert(state_ == kCCMenuStateTrackingTouch, @"[Menu ccTouchMoved] -- invalid state");
CCMenuItem *curSelection = [self itemForTouch:touch];
if (curSelection != _curHighlighted && curSelection != nil) {
[_curHighlighted unselected];
[curSelection selected];
_curHighlighted = curSelection;
return;
}
}
@end