cocos2d游戏暂停页面的实现

 1 #import <Foundation/Foundation.h>
 2 #import "cocos2d.h"
 3 
 4 @interface PauseLayerProtocol: CCNode
 5 
 6 -(void)pauseLayerDidPause;
 7 -(void)pauseLayerDidUnpause;
 8 
 9 @end
10 
11 @interface PauseLayer : CCLayerColor
12 {
13     PauseLayerProtocol * delegate;
14 }
15 
16 @property (nonatomic,assign)PauseLayerProtocol * delegate;
17 
18 + (id) layerWithColor:(ccColor4B)color delegate:(PauseLayerProtocol *)_delegate ;
19 - (id) initWithColor:(ccColor4B)c delegate:(PauseLayerProtocol *)_delegate;
20 -(void)pauseDelegate;
21 
22 @end
 1 #import "PauseLayer.h"
 2 
 3 @implementation PauseLayer
 4 @synthesize delegate;
 5 
 6 + (id) layerWithColor:(ccColor4B)color delegate:(id)_delegate 
 7 {
 8     return [[[self alloc] initWithColor:color delegate:_delegate] autorelease];
 9 }
10 
11 - (id) initWithColor:(ccColor4B)c delegate:(id)_delegate 
12 {
13     self = [super initWithColor:c];
14     CGSize wins = [[CCDirector sharedDirector] winSize];
15     delegate = _delegate;
16     [self pauseDelegate];
17     if (self != nil)
18     {
19         CCSprite * background = [CCSprite spriteWithSpriteFrameName:@"background.png"];
20         [self addChild:background];
21         
22         CCSprite *backBtn = [CCSprite spriteWithSpriteFrameName:@"back.png"];
23         CCSprite *resumeGameBtn = [CCSprite spriteWithSpriteFrameName:@"newBegin.png"];
24         CCMenuItemImage *back = [CCMenuItemImage itemFromNormalSprite:backBtn 
25                                                        selectedSprite:nil                                                               
26                                                                target:self
27                                                              selector:@selector(goBack:)];
28         CCMenuItemImage *resumeGame = [CCMenuItemImage itemFromNormalSprite:resumeGameBtn  
29                                                              selectedSprite:nil 
30                                                                      target:self 
31                                                                    selector:@selector(resumeGame:)];
32         CCMenu * menu = [CCMenu menuWithItems:back, resumeGame, nil];
33         [menu setPosition:ccp(0,0)];
34         
35         [back setPosition:ccp([background boundingBox].size.width/2,[background boundingBox].size.height * 0.75)];
36         [resumeGame setPosition:ccp(back.position.x , back.position.y - 40)];
37         
38         [background addChild:menu];            
39         [background setPosition:ccp(wins.width * 0.5, wins.height * 0.5)];
40     }
41     return self;
42 }
43 
44 -(void)pauseDelegate
45 {
46     if([delegate respondsToSelector:@selector(pauseLayerDidPause)])
47         [delegate pauseLayerDidPause];
48     [delegate onExit];
49     [delegate.parent addChild:self z:10];
50 }
51 
52 -(void)goBack: (id)sender
53 {
54     [delegate onEnter];
55     if([delegate respondsToSelector:@selector(pauseLayerDidUnpause)])
56         [delegate pauseLayerDidUnpause];
57     [self.parent removeChild:self cleanup:YES];
58 }
59 
60 -(void) resumeGame: (id)sender
61 {
62     [self performSelector:@selector(goBack:)];
63     
64     GameScene *gameScene = [GameScene sharedGameScene];
65     [gameScene removeAllChildrenWithCleanup:YES];
66     [gameScene resetGame];
67 }
68 
69 -(void)dealloc
70 {
71     [super dealloc];
72 }
73 
74 @end    

游戏界面的调用

-(void) doPause

{

    [GameCoversetIsGameCoverPressed:NO];

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

    [PauseLayerlayerWithColor:c delegate:(PauseLayerProtocol *)];

}

 
原文地址:https://www.cnblogs.com/hellocby/p/2589992.html