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

来源:互联网 发布:安卓版cf刷枪软件 编辑:程序博客网 时间:2024/06/06 07:52

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

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

            CCMenuItemFont.setFontSize(30);

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

            CCMenuItemFont.setFontName("DroidSans");

1.精灵小菜单;

 // 图片精灵 Item

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

            CCSprite spriteSelected = CCSprite.sprite("menuitemsprite.png", CGRect.make(0,23*1,115,23));

            CCSprite spriteDisabled = CCSprite.sprite("menuitemsprite.png", CGRect.make(0,23*0,115,23));

 //将精灵添加到菜单中;

            CCMenuItemSprite item1 = CCMenuItemSprite.item(spriteNormal, spriteSelected, spriteDisabled, this"menuCallback");

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

 // 单纯的图片菜单;

            CCMenuItem item2 = CCMenuItemImage.item("SendScoreButton.png""SendScoreButtonPressed.png"this"menuCallback2");

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

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

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

            CCLabelAtlas labelAtlas = CCLabelAtlas.label("0123456789""fps_images.png", 16, 24, '.');

            CCMenuItemLabel item3 = CCMenuItemLabel.item(labelAtlas, this"menuCallbackDisabled");

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

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

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

  // Font Item 简单的菜单项:参数(字符,父节点,方法名称);

            CCMenuItem item4 = CCMenuItemFont.item("I toggle enable items"this"menuCallbackEnable");

5.自定义字体样式的

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

            CCBitmapFontAtlas label = CCBitmapFontAtlas.bitmapFontAtlas("configuration""bitmapFontTest3.fnt");

            CCMenuItemLabel item5 = CCMenuItemLabel.item(label, this"menuCallbackConfig");

            // Testing issue #500 

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

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

 // Font Item 文字菜单;

            CCMenuItemFont item6 = CCMenuItemFont.item("Quit"this"onQuit");

            CCIntervalAction color_action = CCTintBy.action(0.5f, ccColor3B.ccc3(0, -255, -255));

            CCIntervalAction color_back = color_action.reverse();

            CCIntervalAction seq = CCSequence.actions(color_action, color_back);

   //持续动画---

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

7.设置菜单的文字效果;

 CCMenuItemFont.setFontName("DroidSans");

            CCMenuItemFont.setFontSize(28);

            CCBitmapFontAtlas label = CCBitmapFontAtlas.bitmapFontAtlas("Enable AtlasItem""bitmapFontTest3.fnt");

            CCMenuItemLabel item1 = CCMenuItemLabel.item(label, this"menuCallback2");

            CCMenuItemFont item2 = CCMenuItemFont.item("--- Go Back ---"this"menuCallback");

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

 //默认为off选项;

            CCMenuItemToggle item4 = CCMenuItemToggle.item(this"menuCallback", CCMenuItemFont.item("Off"));

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

            ArrayList<CCMenuItemFont> more_items = new ArrayList<CCMenuItemFont>();

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

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

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

            // TIP: you can manipulate the items like any other NSMutableArray

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

            item4.getSubItemsRef().addAll(more_items);

9.

 CCMenuItemFont.setFontName("DroidSerif");

            CCMenuItemFont.setFontSize(34);

            CCBitmapFontAtlas label = CCBitmapFontAtlas.bitmapFontAtlas("go back""bitmapFontTest3.fnt");

            CCMenuItemLabel back = CCMenuItemLabel.item(label, this"backCallback");

//添加到菜单容器中;

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

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

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

            addChild(menu);

 

 

最后要由CCmenu来管理

 

  CCMenu menu = CCMenu.menu(item1, item2, item3, item4, item5, item6);

menu.alignItemsVertically();

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

            menu.alignItemsVertically();

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

 CGSize s = CCDirector.sharedDirector().winSize();

            int i=0;

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

            for (CCNode child : menu.getChildren()) {

                final CGPoint dstPoint = child.getPositionRef();

                int offset = (int) (s.width/2 + 20);

                if( i % 2 == 0)

                    offset = -offset;

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

                child.runAction( 

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

                     0.35f)

                    );

                i++;

            }

 

 //设置3为没有焦点;

            disabledItem = item3;

            //没有焦点;

            disabledItem.setIsEnabled(false);

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

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

            addChild(menu);

//设置菜单字宽;

item1.setScaleX(1.5f);

         item2.setScaleY(0.5f);

         item3.setScaleX(0.5f);

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

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

 public void menuCallbackOpacity (Object sender) {

         CCMenuItem item = (CCMenuItem)sender;

            CCMenu menu = (CCMenu)item.getParent();

            //获取最左边的y轴,

            int opacity = menu.getOpacity();

            if (opacity == 128)

                menu.setOpacity((byte) 255);

            else

                menu.setOpacity((byte) 128);

        }

//改变菜单排列方向;

 public void menuCallbackAlign (Object sender) {

            alignedH = ! alignedH;

            ifalignedH )

                alignMenusH();

            else

                alignMenusV();

        }

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

CGSize s = CCDirector.sharedDirector().winSize();

            

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

            item2.setPosition(s.width/2 - 200, s.height/2);

            item3.setPosition(s.width/2, s.height/2 - 100);

//返回;

  public void menuCallbackBack (Object sender) {

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

        }

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

//先取消焦点;

 disabledItem.setIsEnabled(!disabledItem.isEnabled());

            disabledItem.stopAllActions();

 

 

 

0 0
原创粉丝点击