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 *)];

    }

     
  • 相关阅读:
    “同形异义字”钓鱼攻击
    研发管理101军规#001 两周迭代,形成团队持续习惯
    全新 PingCode 正式发布
    Python基础数据类型——tuple浅析
    Python基础变量类型——List浅析
    有了这个神器,快速告别垃圾短信邮件
    零基础打造一款属于自己的网页搜索引擎
    一篇文章教会你使用Python网络爬虫下载酷狗音乐
    趣味解读Python面向对象编程 (类和对象)
    上古神器Gvim--从入门到精通
  • 原文地址:https://www.cnblogs.com/hellocby/p/2589992.html
Copyright © 2011-2022 走看看