cocos2d-x CCMenuItem菜单项

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

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

CCMenuItem继承图:

由于testd对于CCMenuItem讲得非常详细了,于是我就直接取用test里么的例子,然后单独出一个项目出来,这样更有利于代码的阅读和学习,我怕乱,所以单独出来...呵呵!

由于内容有点多,我们就把重点知识贴出来,如果要独立出来的这个工程,可以在下面提供的地址进行下载,大部都写上注释了,重复的我就不写了....

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

呵呵~ 这里对于CCMenuItem是讲得比较全了....接下晚上来研究粒子系统...

原文链接:https://www.f2er.com/cocos2dx/346095.html

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