zoukankan      html  css  js  c++  java
  • 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 *)];

    }

     
  • 相关阅读:
    POJ 2449 Remmarguts' Date(第k短路のA*算法)
    UESTC 1717 Journey(DFS+LCA)(Sichuan State Programming Contest 2012)
    HRBUST 1211 火车上的人数【数论解方程/模拟之枚举+递推】
    洛谷 P1372 又是毕业季I[数论/神坑规律题]
    洛谷 P1865 A % B Problem[筛素数/前缀和思想/区间质数个数]
    CCCC L2-003. 月饼[贪心/类似hdu贪心老鼠]
    二项式定理与杨辉三角
    Educational Codeforces Round 39 (Rated for Div. 2) B. Weird Subtraction Process[数论/欧几里得算法]
    洛谷 P1784 数独[DFS/回溯]
    Wannafly交流赛1 B 硬币[数学思维/贪心]
  • 原文地址:https://www.cnblogs.com/hellocby/p/2589992.html
Copyright © 2011-2022 走看看