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

前端之家收集整理的这篇文章主要介绍了cocos2d-android开发菜单篇(一)上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@下面是基本的菜单操作,还可以继承某些进行改变;

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

@H_502_0@CCMenuItemFont.setFontSize(30);

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

@H_502_0@CCMenuItemFont.setFontName("DroidSans");

@H_502_0@1.精灵小菜单

@H_502_0@//图片精灵Item

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

@H_502_0@CCSpritespriteSelected=CCSprite.sprite(502_0@CCSpritespriteDisabled=CCSprite.sprite(502_0@//将精灵添加菜单中;

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

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

@H_502_0@//单纯的图片菜单

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

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

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

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

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

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

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

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

@H_502_0@4.就一个简单的字体菜单

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

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

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

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

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

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

@H_502_0@//Testingissue#500

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

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

@H_502_0@//FontItem文字菜单

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

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

@H_502_0@CCIntervalActioncolor_back=color_action.reverse();

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

@H_502_0@//持续动画---

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

@H_502_0@7.设置菜单文字效果

@H_502_0@CCMenuItemFont.setFontName("DroidSans");

@H_502_0@CCMenuItemFont.setFontSize(28);

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

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

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

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

@H_502_0@//默认为off选项;

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

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

@H_502_0@ArrayList<CCMenuItemFont>more_items=newArrayList<CCMenuItemFont>();

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

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

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

@H_502_0@//TIP:youcanmanipulatetheitemslikeanyotherNSMutableArray

@H_502_0@//添加到字体list集合菜单

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

@H_502_0@9.

@H_502_0@CCMenuItemFont.setFontName("DroidSerif");

@H_502_0@CCMenuItemFont.setFontSize(34);

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

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

@H_502_0@//添加菜单容器中;

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

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

@H_502_0@menu.alignItemsInColumns(newint[]{2,2,1});

@H_502_0@addChild(menu);

@H_502_0@最后要由CCmenu来管理

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

@H_502_0@menu.alignItemsVertically();

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

@H_502_0@menu.alignItemsVertically();

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

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

@H_502_0@inti=0;

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

@H_502_0@for(CCNodechild:menu.getChildren()){

@H_502_0@finalCGPointdstPoint=child.getPositionRef();

@H_502_0@intoffset=(int)(s.@H_744_301@width/2+20);

@H_502_0@if(i%2==0)

@H_502_0@offset=-offset;

@H_502_0@child.setPosition(dstPoint.@H_744_301@x+offset,dstPoint.@H_744_301@y);

@H_502_0@child.runAction(

@H_502_0@CCEaseElasticOut.action(CCMoveBy.action(2.0f,CGPoint.ccp(dstPoint.@H_744_301@x-offset,0)),

@H_502_0@ 0.35f)

@H_502_0@);

@H_502_0@i++;

@H_502_0@}

@H_502_0@//设置3为没有焦点;

@H_502_0@@H_744_301@disabledItem=item3;

@H_502_0@//没有焦点;

@H_502_0@@H_744_301@disabledItem.setIsEnabled(false);

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

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

@H_502_0@addChild(menu);

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

@H_502_0@item1.setScaleX(1.5f);

@H_502_0@ item2.setScaleY(0.5f);

@H_502_0@ item3.setScaleX(0.5f);

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

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

@H_502_0@publicvoidmenuCallbackOpacity(Objectsender){

@H_502_0@ CCMenuItemitem=(CCMenuItem)sender;

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

@H_502_0@//获取最左边的y轴,

@H_502_0@intopacity=menu.getOpacity();

@H_502_0@if(opacity==128)

@H_502_0@menu.setOpacity((byte)255);

@H_502_0@else

@H_502_0@menu.setOpacity((byte)128);

@H_502_0@}

@H_502_0@//改变菜单排列方向;

@H_502_0@voidmenuCallbackAlign(Objectsender){

@H_502_0@@H_744_301@alignedH=!@H_744_301@alignedH;

@H_502_0@if(@H_744_301@alignedH)

@H_502_0@alignMenusH();

@H_502_0@else

@H_502_0@alignMenusV();

@H_502_0@}

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

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

@H_502_0@item1.setPosition(s.@H_744_301@width/2-150,s.@H_744_301@height/2);

@H_502_0@item2.setPosition(s.@H_744_301@width/2-200,192)">height/2);

@H_502_0@item3.setPosition(s.@H_744_301@width/2,192)">height/2-100);

@H_502_0@//返回;

@H_502_0@voidmenuCallbackBack(Objectsender){

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

@H_502_0@}

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

@H_502_0@//先取消焦点;

@H_502_0@@H_744_301@disabledItem.setIsEnabled(!@H_744_301@disabledItem.isEnabled());

@H_502_0@@H_744_301@disabledItem.stopAllActions();

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