Cocoa2D 实现半透明暂停菜单
2013-01-28 20:09
239 查看
有时候需要实现一个暂停菜单暂停游戏,但菜单自身不暂停(可以有动画),菜单周围都是半透明的(能显示底部的游戏内容),以下代码就是实现此类功能:
PauseLayer.h
PauseLayer.m
使用如下代码调用:
PauseLayer.h
PauseLayer.h #import <Foundation/Foundation.h> #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
// // PauseLayer.m // Pause // // Created by Pablo Ruiz on 06/06/11. // Copyright 2011 PlaySnack. All rights reserved. // #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
使用如下代码调用:
ccColor4B c={0,0,0,150}; [PauseLayerlayerWithColor:c delegate:self];
相关文章推荐
- 用VB实现QQ一样的菜单(半透明窗口)
- CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
- JS实现仿苹果底部任务栏菜单效果代码
- Android实现下拉导航选择菜单效果
- js+xml实现二级菜单
- 给树加上右键菜单,及实现菜单相应功能
- 【Android界面实现】实现底部扇形展开菜单效果
- js实现简单折叠、展开菜单的方法
- JQ 实现菜单伸缩
- DEDECMS v5.7 完美实现导航条下拉二级菜单
- CSS3实现二级菜单
- 实现基于Ajax的无限级菜单
- 使用Bottom Sheet实现底部菜单
- HTML实现菜单功能
- android 二级菜单实现
- 兼容谷歌、火狐、IE7.0以上浏览器div+css实现的带有蒙版的半透明弹窗效果[xyytit]
- 单片机C语言下LCD多级菜单的一种实现方法
- 用TreeView实现树菜单
- 弹出层,半透明蒙层提示的实现办法
- jQuery实现可用于博客的动态滑动菜单完整实例