• Cocosdx中CCMenuItem菜单项进一步介绍


    CCMenu这是一个抽象的东西,容纳菜单项CCMenuItem的容器....

    上次只是简单的介绍一下CCMenuItem,通过最近的学习对CCMenuItem又有了进一步的掌握,然后重新对CCMenuItem有了一个进一步的介绍。内容如下:

     1 MenuTestLayer::MenuTestLayer(void)
     2 {
     3 //设置字体大小
     4 CCMenuItemFont::setFontSize( 30 );
     5 //根据名字设置字体
     6 CCMenuItemFont::setFontName("Courier New");
     7 //设置能点击
     8 setTouchEnabled(true);
     9 // Font Item
    10  
    11 //参数说明:第一个图片名字,第二参数截图menuitemsprite.png的一个对象(x,y,w,h),说明此处的x,y为图片的坐标喔~
    12 CCSprite* spriteNormal = CCSprite::create("menuitemsprite.png", CCRectMake(0,23*2,115,23));
    13 CCSprite* spriteSelected = CCSprite::create("menuitemsprite.png", CCRectMake(0,23*1,115,23));
    14 CCSprite* spriteDisabled = CCSprite::create("menuitemsprite.png", CCRectMake(0,23*0,115,23));
    15  
    16 //创建一个CCMenuItemSprite,参数:添加三种状态CCSprite,添加item1的节点,注册返回监听
    17 CCMenuItemSprite* item1 = CCMenuItemSprite::create(spriteNormal, spriteSelected, spriteDisabled, this, menu_selector(MenuTestLayer::menuCallback) );
    18  
    19 // 创建一个CCMenuItemImage,参数:同上
    20 CCMenuItem* item2 = CCMenuItemImage::create("SendScoreButton.png", "SendScoreButtonPressed.png", this, menu_selector(MenuTestLayer::menuCallback2) );
    21  
    22 // 创建一个CCLabelAtlas标签(Atlas一般是指图片集合),参数:内容(图片资源中存在,如果不存在,不显示),图片,宽,高
    23 CCLabelAtlas* labelAtlas = CCLabelAtlas::create("0123456789", "fonts/labelatlas.png", 16, 24, '.');
    24 //创建一个CCMenuItemLebel标签
    25 CCMenuItemLabel* item3 = CCMenuItemLabel::create(labelAtlas, this, menu_selector(MenuTestLayer::menuCallbackDisabled) );
    26 item3->setDisabledColor( ccc3(32,32,64) );//设置不能点击的颜色(一般采用灰色)
    27 item3->setColor( ccc3(200,200,255) );//设置item3标签颜色
    28  
    29 // 创建一个CCMenuItemFont 
    30 CCMenuItemFont *item4 = CCMenuItemFont::create("I toggle enable items", this, menu_selector(MenuTestLayer::menuCallbackEnable) );
    31  
    32 item4->setFontSizeObj(20);
    33 item4->setFontName("Marker Felt");
    34  
    35 // 创建一个CCLabelBMFont标签,参数:内容,字体配置fnt文件
    36 CCLabelBMFont* label = CCLabelBMFont::create("configuration", "fonts/bitmapFontTest3.fnt");
    37 CCMenuItemLabel* item5 = CCMenuItemLabel::create(label, this, menu_selector(MenuTestLayer::menuCallbackConfig));
    38  
    39 item5->setScale( 0.8f );
    40  
    41 // 创建一个CCMenuItemFont
    42 CCMenuItemFont::setFontName("Marker Felt");
    43 CCMenuItemFont *item6 = CCMenuItemFont::create("Priority Test", this, menu_selector(MenuTestLayer::menuCallbackPriorityTest));
    44  
    45 // 创建一个CCMenuItemFont
    46 CCMenuItemFont* item7 = CCMenuItemFont::create("Quit", this, menu_selector(MenuTestLayer::onQuit));
    47 //为CCMenuItemFon添加一个颜色循环变化动画....item7也是父类CCNode的子类,自然也可以添加动画啦
    48 CCActionInterval* color_action = CCTintBy::create(0.5f, 0, -255, -255);
    49 CCActionInterval* color_back = color_action->reverse();
    50 CCFiniteTimeAction* seq = CCSequence::create(color_action, color_back, NULL);
    51 item7->runAction(CCRepeatForever::create((CCActionInterval*)seq));
    52  
    53 //创建CCMenu菜单,其他可认为是菜单项
    54 CCMenu* menu = CCMenu::create( item1, item2, item3, item4, item5, item6, item7, NULL);
    55 menu->alignItemsVertically();//可以理解为设置成垂直排列
    56 //menu->alignItemsHorizontally();//水平排列
    57  
    58 // elastic effect
    59 CCSize s = CCDirector::sharedDirector()->getWinSize();
    60  
    61 int i=0;
    62 CCNode* child;
    63 CCArray * pArray = menu->getChildren();
    64 CCObject* pObject = NULL;
    65 //将pArray里面的对象转成CCObject对象,原因获得坐标等信息
    66 CCARRAY_FOREACH(pArray, pObject)
    67 {
    68 if(pObject == NULL)
    69 break;
    70  
    71 child = (CCNode*)pObject;
    72  
    73 CCPoint dstPoint = child->getPosition();
    74 int offset = (int) (s.width/2 + 50);
    75 if( i % 2 == 0)
    76 offset = -offset;
    77  
    78 child->setPosition( CCPointMake( dstPoint.x + offset, dstPoint.y) );
    79 child->runAction( CCEaseElasticOut::create( CCMoveBy::create(2, CCPointMake(dstPoint.x - offset,0)), 0.35f) );
    80 i++;
    81 }
    82  
    83 m_disabledItem = item3; item3->retain();
    84 m_disabledItem->setEnabled( false );
    85  
    86 addChild(menu);
    87 menu->setPosition(ccp(s.width/2, s.height/2));
    88 }

     

  • 相关阅读:
    Golang Gin 框架 Route备注
    golang的时区和神奇的time.Parse
    Linux下查看内存使用情况方法总结
    Golang 图片上绘制文字
    在linux中安装字体
    一键解决 go get golang.org/x 包失败
    go如何进行交叉编译
    Ubuntu中apt与apt-get命令的区别
    linux dns 工具包 -- bind-utils
    nohup 和 &的含义
  • 原文地址:https://www.cnblogs.com/atong/p/3012658.html
Copyright © 2020-2023  润新知