ios开发 暂停和返回游戏按钮设计


1.类文件代码

PauseLayer.h

#import

#import "cocos2d.h"


@interface PauseLayerProtocol: CCNode


-(void)pauseLayerDidPause;

-(void)pauseLayerDidUnpause;

@end


@interface PauseLayer : CCLayerColor {


PauseLayerProtocol * delegate;

}


@property (nonatomic,assign)PauseLayerProtocol * delegate;


+ (id) layerWithColor:(ccColor4B)color delegate:(PauseLayerProtocol *)_delegate;

- (id) initWithColor:(ccColor4B)c delegate:(PauseLayerProtocol *)_delegate;

-(void)pauseDelegate;


@end



PauseLayer.m


#import "PauseLayer.h"


@implementation PauseLayer


@synthesize delegate;


+ (id) layerWithColor:(ccColor4B)color delegate:(id)_delegate

{

return [[[self alloc] initWithColor:color delegate:_delegate] autorelease];

}


- (id) initWithColor:(ccColor4B)c delegate:(id)_delegate {

self = [super initWithColor:c];

if (self != nil) {


CGSize wins = [[CCDirector sharedDirector] winSize];


delegate = _delegate;

[self pauseDelegate];


CCSprite * background = [CCSprite spriteWithFile:@"pause_background.png"];


[self addChild:background];


CCMenuItemImage *resume = [CCMenuItemImage itemFromNormalImage:@"pause_btn_resume.png"

selectedImage:@"pause_btn_resume_dwn.png"

target:self

selector:@selector(doResume:)];

CCMenu * menu = [CCMenu menuWithItems:resume,nil];


[menu setPosition:ccp(0,0)];


[resume setPosition:ccp([background boundingBox].size.width/2,[background boundingBox].size.height/2)];


[background addChild:menu];


[background setPosition:ccp(wins.width/2,wins.height/2)];


}

return self;

}


-(void)pauseDelegate

{

if([delegate respondsToSelector:@selector(pauseLayerDidPause)])

[delegate pauseLayerDidPause];

[delegate onExit];

[delegate.parent addChild:self z:10];

}


-(void)doResume: (id)sender

{

[delegate onEnter];

if([delegate respondsToSelector:@selector(pauseLayerDidUnpause)])

[delegate pauseLayerDidUnpause];

[self.parent removeChild:self cleanup:YES];

}


-(void)dealloc

{

[super dealloc];

}


@end


2.如何使用

在实际使用的时候,只需要在游戏的场景层导入PauseLayer.h这个头文件,然后调用以下方法即可:

-(void)doPause

{

ccColor4B c ={0,0,0,150};

[PauseLayer layerWithColor:c delegate:self];

}


用一个简单的HelloWorld项目来测试是正常的:

首先在HelloWorldLayer.m的顶部添加

#import "PauseLayer.h"

init方法中添加以下代码:

CCMenuItem*pauseButton = [CCMenuItemImage itemWithNormalImage:@"playbutton.png" selectedImage:@"playbutton.png" target:self selector:@selector(doPause)];

pauseButton.position = ccp(size.width*0.3,size.height*0.3);


CCMenu *menu = [CCMenu menuWithItems:pauseButton, nil];

menu.position = CGPointZero;

[self addChild:menu];


然后添加以下方法:

-(void)doPause

{

ccColor4B c = {0,0,0,150};

[PauseLayer layerWithColor:c delegate:self];

 

}

---------------------------------更新--------------------------------------------

简单的暂停与继续(不需要复杂的菜单选项)可以用pauseresume来实现:

添加一个暂停按钮,在调用的selector方法中添加一个继续按钮,然后[[CCDirector sharedDirector] pause];

在点击继续按钮后调用响应的selector,在这里首先要将继续按钮移除(如果你已经不需要它了):

[self removeChild:continueMenu];

[[CCDirector sharedDirector] resume];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值