cocos2d-android开发菜单篇(一)上

前端之家收集整理的这篇文章主要介绍了cocos2d-android开发菜单篇(一)上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面是基本的菜单操作,还可以继承某些进行改变;@H_403_1@

//设置总的菜单的字体大小;@H_502_4@@H_403_1@

CCMenuItemFont.setFontSize(30);@H_403_1@

//设置文字字体,默认使用系统的;@H_502_4@@H_403_1@

CCMenuItemFont.setFontName("DroidSans"@H_502_4@);@H_403_1@

1.精灵小菜单;@H_502_4@@H_403_1@

//图片精灵Item@H_502_4@@H_403_1@

CCSpritespriteNormal=CCSprite.sprite("menuitemsprite.png"@H_502_4@,CGRect.make(0,23*2,115,23));@H_403_1@

CCSpritespriteSelected=CCSprite.sprite(403_1@

CCSpritespriteDisabled=CCSprite.sprite(403_1@

//将精灵添加菜单中;@H_502_4@@H_403_1@

CCMenuItemSpriteitem1=CCMenuItemSprite.item(spriteNormal,spriteSelected,spriteDisabled,this@H_502_4@,"menuCallback"@H_502_4@);@H_403_1@

2.有两个状态(初始和按下)的按钮菜单;@H_502_4@@H_403_1@

//单纯的图片菜单;@H_502_4@@H_403_1@

CCMenuItemitem2=CCMenuItemImage.item("SendscoreButton.png"@H_502_4@,255)">"SendscoreButtonPressed.png"@H_502_4@,255)">"menuCallback2"@H_502_4@);@H_403_1@

3.有两个渲染颜色显示方式的菜单,@H_502_4@@H_403_1@

//字体菜单(改变图片文字渲染颜色)----字体标签(颜色(失去焦点的颜色和获得焦点的文字))@H_502_4@@H_403_1@

//参数:字符串,文字图片,宽,高,分割符;@H_502_4@@H_403_1@

CCLabelAtlaslabelAtlas=CCLabelAtlas.label("0123456789"@H_502_4@,255)">"fps_images.png"@H_502_4@,16,24,255)">'.'@H_502_4@);@H_403_1@

CCMenuItemLabelitem3=CCMenuItemLabel.item(labelAtlas,255)">"menuCallbackDisabled"@H_502_4@);@H_403_1@

item3.setDisabledColor(ccColor3B.ccc3(32,32,64));@H_403_1@

item3.setColor(ccColor3B.ccc3(200,200,255));@H_403_1@

4.就一个简单的字体菜单;@H_502_4@@H_403_1@

//FontItem简单的菜单项@H_502_4@:参数(字符,父节点,方法名称);@H_502_4@@H_403_1@

CCMenuItemitem4=CCMenuItemFont.item("Itoggleenableitems"@H_502_4@,255)">"menuCallbackEnable"@H_502_4@);@H_403_1@

5.自定义字体样式的@H_403_1@

//LabelItem(BitmapFontAtlas)自定义字体的菜单项;(该字体会制动转换成大写)@H_502_4@@H_403_1@

CCBitmapFontAtlaslabel=CCBitmapFontAtlas.bitmapFontAtlas("configuration"@H_502_4@,255)">"bitmapFontTest3.fnt"@H_502_4@);@H_403_1@

CCMenuItemLabelitem5=CCMenuItemLabel.item(label,255)">"menuCallbackConfig"@H_502_4@);@H_403_1@

//Testingissue#500@H_502_4@@H_403_1@

item5.setScale(0.8f);//设置大小;@H_502_4@@H_403_1@

6.就一个单纯的文字,然后不停的闪烁颜色;@H_502_4@@H_403_1@

//FontItem文字菜单;@H_502_4@@H_403_1@

CCMenuItemFontitem6=CCMenuItemFont.item("Quit"@H_502_4@,255)">"onQuit"@H_502_4@);@H_403_1@

CCIntervalActioncolor_action=CCTintBy.action(0.5f,ccColor3B.ccc3(0,-255,-255));@H_403_1@

CCIntervalActioncolor_back=color_action.reverse();@H_403_1@

CCIntervalActionseq=CCSequence.actions(color_action,color_back);@H_403_1@

//持续动画---@H_502_4@@H_403_1@

item6.runAction(CCRepeatForever.action(seq));@H_403_1@

7.设置菜单文字效果;@H_502_4@@H_403_1@

CCMenuItemFont.setFontName("DroidSans"@H_502_4@);@H_403_1@

CCMenuItemFont.setFontSize(28);@H_403_1@

CCBitmapFontAtlaslabel=CCBitmapFontAtlas.bitmapFontAtlas("EnableAtlasItem"@H_502_4@,255)">"bitmapFontTest3.fnt"@H_502_4@);@H_403_1@

CCMenuItemLabelitem1=CCMenuItemLabel.item(label,255)">"menuCallback2"@H_502_4@);@H_403_1@

CCMenuItemFontitem2=CCMenuItemFont.item("---GoBack---"@H_502_4@,255)">"menuCallback"@H_502_4@);@H_403_1@

8.点击交换文字菜单类似自带的屏幕亮度调节@H_502_4@//@H_502_4@@H_403_1@

//默认为off选项;@H_502_4@@H_403_1@

CCMenuItemToggleitem4=CCMenuItemToggle.item("menuCallback"@H_502_4@,CCMenuItemFont.item("Off"@H_502_4@));@H_403_1@

//多个选项菜单项个list集合;@H_502_4@@H_403_1@

ArrayList<CCMenuItemFont>more_items=new@H_502_4@ArrayList<CCMenuItemFont>();@H_403_1@

more_items.add(CCMenuItemFont.item("33%"@H_502_4@));@H_403_1@

more_items.add(CCMenuItemFont.item("66%"@H_502_4@));@H_403_1@

more_items.add(CCMenuItemFont.item("100%"@H_502_4@));@H_403_1@

//TIP:youcanmanipulatetheitemslikeanyotherNSMutableArray@H_502_4@@H_403_1@

//添加到字体list集合菜单;@H_502_4@@H_403_1@

item4.getSubItemsRef().addAll(more_items);@H_403_1@

9.@H_403_1@

CCMenuItemFont.setFontName("DroidSerif"@H_502_4@);@H_403_1@

CCMenuItemFont.setFontSize(34);@H_403_1@

CCBitmapFontAtlaslabel=CCBitmapFontAtlas.bitmapFontAtlas("goback"@H_502_4@,255)">"bitmapFontTest3.fnt"@H_502_4@);@H_403_1@

CCMenuItemLabelback=CCMenuItemLabel.item(label,255)">"backCallback"@H_502_4@);@H_403_1@

//添加菜单容器中;@H_502_4@@H_403_1@

CCMenumenu=CCMenu.menu(title1,title2,item1,item2,title3,title4,item3,item4,back);//9items.@H_502_4@@H_403_1@

//设置:显示优先级;越大越是在前;@H_502_4@@H_502_4@@H_403_1@

menu.alignItemsInColumns(new@H_502_4@int@H_502_4@[]{2,2,1});@H_403_1@

addChild(menu);@H_403_1@

最后要由CCmenu@H_502_4@来管理@H_502_4@@H_403_1@

CCMenumenu=CCMenu.menu(item1,item5,item6);@H_403_1@

menu.alignItemsVertically();@H_403_1@

//将菜单设置为垂直的;@H_502_4@@H_403_1@

menu.alignItemsVertically();@H_403_1@

然后就是对菜单的位置进行设置:@H_403_1@

CGSizes=CCDirector.sharedDirector().winSize();@H_403_1@

int@H_502_4@i=0;@H_403_1@

//共有6个;循环重新设置位置;@H_502_4@--注意这里的@H_502_4@getChildren@H_502_4@方法获取该主菜单的所有的子选项@H_502_4@;@H_502_4@@H_502_4@@H_403_1@

for@H_502_4@(CCNodechild:menu.getChildren()){@H_403_1@

final@H_502_4@CGPointdstPoint=child.getPositionRef();@H_403_1@

int@H_502_4@offset=(int@H_502_4@)(s.@H_577_301@width@H_502_4@/2+20);@H_403_1@

if@H_502_4@(i%2==0)@H_403_1@

offset=-offset;@H_403_1@

child.setPosition(dstPoint.@H_577_301@x@H_502_4@+offset,dstPoint.@H_577_301@y@H_502_4@);@H_403_1@

child.runAction(@H_403_1@

CCEaseElasticOut.action(CCMoveBy.action(2.0f,CGPoint.ccp(dstPoint.@H_577_301@x@H_502_4@-offset,0)),@H_403_1@

0.35f)@H_403_1@

);@H_403_1@

i++;@H_403_1@

}@H_403_1@

//设置@H_502_4@3@H_502_4@为没有焦点;@H_502_4@@H_403_1@

@H_577_301@disabledItem@H_502_4@=item3;@H_403_1@

//没有焦点;@H_502_4@@H_403_1@

@H_577_301@disabledItem@H_502_4@.setIsEnabled(false@H_502_4@);@H_403_1@

//最后不要忘了将菜单添加到该布景中;@H_502_4@@H_403_1@

//这里,位置焦点等属性设置好再添加到主场景中;@H_502_4@@H_403_1@

addChild(menu);@H_403_1@

//设置菜单字宽;@H_403_1@

item1.setScaleX(1.5f);@H_403_1@

item2.setScaleY(0.5f);@H_403_1@

item3.setScaleX(0.5f);@H_403_1@

还可以动态改变菜单的位置,颜色等变化;通过动画和一些属性来共同改变;@H_403_1@

//比如下边的效果是隐藏父菜单;@H_403_1@

public@H_502_4@void@H_502_4@menuCallbackOpacity(Objectsender){@H_403_1@

CCMenuItemitem=(CCMenuItem)sender;@H_403_1@

CCMenumenu=(CCMenu)item.getParent();@H_403_1@

//获取最左边的y轴,@H_502_4@@H_403_1@

int@H_502_4@opacity=menu.getOpacity();@H_403_1@

if@H_502_4@(opacity==128)@H_403_1@

menu.setOpacity((byte@H_502_4@)255);@H_403_1@

else@H_502_4@@H_403_1@

menu.setOpacity((byte@H_502_4@)128);@H_403_1@

}@H_403_1@

//改变菜单排列方向;@H_502_4@@H_403_1@

void@H_502_4@menuCallbackAlign(Objectsender){@H_403_1@

@H_577_301@alignedH@H_502_4@=!@H_577_301@alignedH@H_502_4@;@H_403_1@

if@H_502_4@(@H_577_301@alignedH@H_502_4@)@H_403_1@

alignMenusH();@H_403_1@

else@H_502_4@@H_403_1@

alignMenusV();@H_403_1@

}@H_403_1@

//先固定菜单,下面的是按比例的最好的;@H_502_4@@H_403_1@

CGSizes=CCDirector.sharedDirector().winSize();@H_403_1@

item1.setPosition(s.@H_577_301@width@H_502_4@/2-150,s.@H_577_301@height@H_502_4@/2);@H_403_1@

item2.setPosition(s.@H_577_301@width@H_502_4@/2-200,192)">height@H_502_4@/2);@H_403_1@

item3.setPosition(s.@H_577_301@width@H_502_4@/2,192)">height@H_502_4@/2-100);@H_403_1@

//返回;@H_502_4@@H_403_1@

void@H_502_4@menuCallbackBack(Objectsender){@H_403_1@

((CCMultiplexLayer)getParent()).switchTo(0);@H_403_1@

}@H_403_1@

当停止一个菜单的动作时:@H_403_1@

//先取消焦点;@H_403_1@

@H_577_301@disabledItem@H_502_4@.setIsEnabled(!@H_577_301@disabledItem@H_502_4@.isEnabled());@H_403_1@

@H_577_301@disabledItem@H_502_4@.stopAllActions();@H_403_1@

猜你在找的Cocos2d-x相关文章