- 论坛徽章:
- 0
|
ios-cocos2d游戏开发基础-菜单详解-开发笔记(五)
本文将介绍游戏制作中不可缺少的一项功能-游戏菜单,在cocos2d游戏制作中,菜单的制作方法有很多,下面将逐一介绍下菜单的制作方法(使用CCMenu类来生成菜单。CCMenu只支持 CCMenuItem节点作为它的子节点。):
一.文字菜单- 01.- (id)init
-
- 02.{
-
- 03. self = [super initWithColor:ccc4(255, 0, 255, 255)];
-
- 04. if(self){
-
- 05.CGSize size = [[CCDirector sharedDirector] winSize];//获得OpenGL View的尺寸,虽然这里是winSize,其实并不一定是整个windows的size
-
- 06.
- 07. [CCMenuItemFont setFontName:@"Marker Felt"]; //设置菜单字体
-
- 08. [CCMenuItemFont setFontSize:32]; //设置菜单字体大小
-
- 09.
- 10. //菜单项,文字标签菜单,并指定调用方法
-
- 11. CCMenuItemFont *menuOne = [CCMenuItemFont itemFromString:@"start Game" target:self
-
- 12. selector:@selector(startGame)];
-
- 13. CCMenuItemFont *menuThr = [CCMenuItemFont itemFromString:@"return Game" target:self selector:@selector(returnGame)];
-
- 14. CCMenuItemFont *menuTwo = [CCMenuItemFont itemFromString:@"end Game" target:self selector:@selector(endGame)];
-
- 15.
- 16. CCMenu *menu = [CCMenu menuWithItems:menuOne,menuThr,menuTwo, nil]; //用菜单项生成菜单
-
- 17. menu.position = ccp(size.width/2, size.height/2); //坐标
-
- 18. [menu alignItemsVerticallyWithPadding:20]; //排列对齐 *这个很重要,如果没有菜单将重叠在一起
-
- 19. [self addChild:menu z:0 tag:2]; //加入到层
-
- 20.}
-
- 21.
- 22. return self;
-
- 23.
- 24.}
-
- 25.
- 26.- (void)startGame
-
- 27.{
-
- 28. CCLOG(@"开始游戏");
-
- 29.}
-
- 30.
- 31.- (void)returnGame
-
- 32.{
-
- 33. CCLOG(@"返回游戏");
-
- 34.}
-
- 35.
- 36.- (void)endGame
-
- 37.{
-
- 38. CCLOG(@"结束游戏");
-
- 39.}
- 复制代码
复制代码 基于CCMenuItemFont,用于显示一条文字。当点击此菜单项,它 会调用menuItem1Touched方法。在程序内部,CCMenuItemFont只是简单的生成 一个CCLabel。如果你的场景中已经有一个CCLabel,你可以把它与 CCMenuItemLabel类结合在一起使用。
——————————————————–
二.图像菜单。- 01.- (id)init
-
- 02.{
-
- 03. self = [super initWithColor:ccc4(255, 0, 255, 255)];
-
- 04. if(self){
-
- 05. //初始化样式
-
- 06. CCSprite *menuOne = [CCSprite spriteWithFile:@"player.png"];
-
- 07. menuOne.color = ccBLACK;
-
- 08. //点击后的样式(颜色改变)
-
- 09. CCSprite *sMenuOne = [CCSprite spriteWithFile:@"player.png"];
-
- 10. sMenuOne.color = ccRED;
-
- 11. //加入到精灵菜单CCMenuItemSprite,并设置调用方法
-
- 12. CCMenuItemSprite *sMenu = [CCMenuItemSprite itemFromNormalSprite:menuOne selectedSprite:sMenuOne target:self selector:@selector(imageMenuOne)];
- 13. CCSprite *menuTwo = [CCSprite spriteWithFile:@"icon.png"];
-
- 14. menuTwo.color = ccBLACK;
-
- 15. CCSprite *sMenuTwo = [CCSprite spriteWithFile:@"icon.png"];
-
- 16. sMenuTwo.color = ccRED;
-
- 17. CCMenuItemSprite *tSMenu = [CCMenuItemSprite itemFromNormalSprite:menuTwo selectedSprite:sMenuTwo target:self selector:@selector(imageMenuTwo)];
-
- 18.
- 19. CCMenu *menu = [CCMenu menuWithItems:sMenu,tSMenu, nil];//用菜单项生成菜单
-
- 20. [menu alignItemsVerticallyWithPadding:20];//排列对齐 *这个很重要,如果没有菜单将重叠在一起
-
- 21. menu.position = ccp(size.width/2, size.height/2); //坐标
-
- 22. [self addChild:menu z:0 tag:1];//加入到层
-
- 23.
- 24.
- 25. }
-
- 26.
- 27. return self;
-
- 28.
- 29.}
-
- 30.
- 31.- (void)imageMenuOne
-
- 32.{
-
- 33. CCLOG(@"图像菜单一");
-
- 34.}
-
- 35.- (void)imageMenuTwo
-
- 36.{
-
- 37. CCLOG(@"图像菜单二");
-
- 38.}
- 复制代码
复制代码 使用图像创建菜单可以使用CCMenuItemImage或CCMenuItemSprite。CCMenuItemImage,它利用图片文件 生成菜单项,内部实际上使用了CCSprite来实现。
CCMenuItemSprite。我认为这个类使用起来更加方便,因为它可以重复 利用已有的精灵作为参数。你可以改变同一个图片的颜色,作为显示触摸后高 亮效果的图片。当然其中还有很多属性可以自己设置,比如点击后图像放大等。
——————————————————–
三.开关菜单。
- 01.- (id)init
-
- 02.{
-
- 03. self = [super initWithColor:ccc4(255, 0, 255, 255)];
-
- 04. if(self){
-
- 05.CCMenuItemFont *menuOne = [CCMenuItemFont itemFromString:@"开启声音"];
-
- 06. CCMenuItemFont *menuTwo = [CCMenuItemFont itemFromString:@"关闭声音"];
-
- 07.
- 08. CCMenuItemToggle *tMenu = [CCMenuItemToggle itemWithTarget:self selector:@selector(openSound:) items:menuOne,menuTwo, nil];
- 09. CCMenu *menu = [CCMenu menuWithItems:tMenu, nil];//用菜单项生成菜单
-
- 10. menu.position = ccp(size.width/2, size.height/2);//坐标
-
- 11. [menu alignItemsVerticallyWithPadding:20]; //排列对齐 *这个很重要,如果没有菜单将重叠在一起
-
- 12. [self addChild:menu z:0 tag:2];
-
- 13.
- 14. }
-
- 15.
- 16. return self;
-
- 17.
- 18.}
-
- 19.
- 20.- (void)openSound:(id)sender{
-
- 21.
- 22. CCLOG(@"声音开关");
-
- 23. //可以在此方法里进行相应的功能编辑
-
- 24.}
- 复制代码
复制代码 CCMenuItemToggole只接受两个继承自CCMenuItem的对象作为参数,当用户点击 菜单时,菜单将会在两个菜单项之间进行切换。你可以在CCMenuItemToggle里 使用文字标签或者图片。CCMenu本身被生成和放置在场景中。因为所有菜单项都是CCMenu的子节 点,它们放置的位置都是相对于CCMenu的。为了不让菜单互相叠加在一起,你 必须调用一个CCMenu的排列对齐方法, alighItemsVerticallyWithPadding方法。因为CCMenu包含了所有的菜单项,你可以通过动作来让它们一起滚动。这会让 你的菜单看上去不那么呆板。
下面列出了以上菜单形式的图形界面,
[/url][/url][url=http://www.helmsmansoft.com/wp-content/uploads/2011/11/20111404.png][url=http://www.helmsmansoft.com/wp-content/uploads/2011/11/20111405.png]
|
|