Cocos2d-x-->CCMenuItem菜单项

来源:互联网 发布:java io详解 编辑:程序博客网 时间:2024/05/21 23:34

1.CCMenu是由菜单项CCMenuItem 组成的,通常先创建菜单项,然后使用1个或多个菜单项生成菜单。

2.CCMenuItem子类:

CCMenuItemImage:图片按钮菜单项(通过图片资源创建菜单项)
CCMenuItemFont:文本按钮菜单项(通过文本创建菜单项
CCMenuItemToggle:开关按钮菜单项(通过其它类如CCMenuItemImage,CCMenuItemFont,CCMenuItemSprite创建菜单项)
CCMenuItemSprite:精灵按钮菜单项(通过精灵CCSprite创建菜单项)
CCMenuItemLabel:文本标签按钮菜单项(通过文本标签创建菜单项)

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. local function MenuLayer1()  
  2.     local isHorizontal = true  
  3.     local layer1 = CCLayer:create()  
  4.       
  5.     local function setMenuHorizontal()  
  6.         for i=0,1 do  
  7.             local menu = layer1:getChildByTag(100+i)  
  8.             menu = tolua.cast(menu,"CCMenu")  
  9.               
  10.             if i == 0 then  
  11.                 menu:alignItemsHorizontally() --水平方向默认间隙排列  
  12.                 menu:setPosition(ccpAdd(ccp(size.width*0.5,size.height*0.5),ccp(0,50)))  
  13.             else  
  14.                 menu:alignItemsHorizontallyWithPadding(40) --水平方向以padding间隙排列  
  15.                 menu:setPosition(ccpSub(ccp(size.width*0.5,size.height*0.5),ccp(0,50)))  
  16.             end  
  17.         end  
  18.     end  
  19.       
  20.     local function setMenuVertical()  
  21.         for i=0,1 do  
  22.             local menu = tolua.cast(layer1:getChildByTag(100+i),"CCMenu")  
  23.             if i==0 then  
  24.                 menu:alignItemsVertically() --垂直方向默认间隙排列  
  25.                 menu:setPosition(ccpAdd(ccp(size.width*0.5,size.height*0.5),ccp(100,0)))  
  26.             else  
  27.                 menu:alignItemsVerticallyWithPadding(40) --垂直方向以padding间隙排列  
  28.                 menu:setPosition(ccpSub(ccp(size.width*0.5,size.height*0.5),ccp(100,0)))  
  29.             end  
  30.         end  
  31.     end  
  32.   
  33.     local function playCallFunc(tag,sender)  
  34.         tolua.cast(sender:getParent():getParent():getParent(),"CCLayerMultiplex"):switchTo(0)  
  35.     end  
  36.       
  37.     local function highCallFunc(tag,sender)  
  38.         local menu = tolua.cast(sender:getParent(),"CCMenu")  
  39.         if menu:getOpacity() == 128 then  
  40.             menu:setOpacity(255)  
  41.         else  
  42.             menu:setOpacity(128)  
  43.         end  
  44.     end  
  45.       
  46.     local function aboutCallFunc(tag,sender)  
  47.       
  48.         if isHorizontal == true then  
  49.             setMenuVertical()  
  50.         else  
  51.             setMenuHorizontal()  
  52.         end  
  53.         isHorizontal = not isHorizontal  
  54.           
  55.     end  
  56.       
  57.     for i=0,1 do  
  58.         local item1 = CCMenuItemImage:create("btn-play-normal.png","btn-play-selected.png") --参数1:正常状态的图片  参数2:按下去时的图片 参数3:不可点选下的图片  
  59.         local item2 = CCMenuItemImage:create("btn-highscores-normal.png","btn-highscores-selected.png")  
  60.         local item3 = CCMenuItemImage:create("btn-about-normal.png","btn-about-selected.png")  
  61.   
  62.         item1:registerScriptTapHandler(playCallFunc)  --当这个菜单项被按下时候的回调函数(playCallFunc)  
  63.         item2:registerScriptTapHandler(highCallFunc)  
  64.         item3:registerScriptTapHandler(aboutCallFunc)  
  65.           
  66.         item1:setScaleX(1.5) --对精灵宽度进行缩放  
  67.         item2:setScaleX(0.5)  
  68.         item3:setScaleX(0.5)  
  69.           
  70.         local menu = CCMenu:create() --创建菜单,并加入3个菜单项  
  71.         menu:addChild(item1)  
  72.         menu:addChild(item2)  
  73.         menu:addChild(item3)  
  74.         layer1:addChild(menu,1,100+i)  
  75.     end  
  76.       
  77.     setMenuHorizontal()  
  78.       
  79.     return layer1  
  80. end  

示例图如下:

图1:

图2:



0 0