感谢点评与关注,欢迎转载与分享。
勤奋努力,持之以恒!
1.CCMenu是由菜单项CCMenuItem 组成的,通常先创建菜单项,然后使用1个或多个菜单项生成菜单。
2.CCMenuItem子类:
CCMenuItemImage:图片按钮菜单项(通过图片资源创建菜单项)
CCMenuItemFont:文本按钮菜单项(通过文本创建菜单项)
CCMenuItemToggle:开关按钮菜单项(通过其它类如CCMenuItemImage,CCMenuItemFont,CCMenuItemSprite创建菜单项)
CCMenuItemSprite:精灵按钮菜单项(通过精灵CCSprite创建菜单项)
CCMenuItemLabel:文本标签按钮菜单项(通过文本标签创建菜单项)
local function MenuLayer1()
local isHorizontal = true
local layer1 = CCLayer:create()
local function setMenuHorizontal()
for i=0,1 do
local menu = layer1:getChildByTag(100+i)
menu = tolua.cast(menu,"CCMenu")
if i == 0 then
menu:alignItemsHorizontally() --水平方向默认间隙排列
menu:setPosition(ccpAdd(ccp(size.width*0.5,size.height*0.5),ccp(0,50)))
else
menu:alignItemsHorizontallyWithPadding(40) --水平方向以padding间隙排列
menu:setPosition(ccpSub(ccp(size.width*0.5,size.height*0.5),ccp(0,50)))
end
end
end
local function setMenuVertical()
for i=0,1 do
local menu = tolua.cast(layer1:getChildByTag(100+i),"CCMenu")
if i==0 then
menu:alignItemsVertically() --垂直方向默认间隙排列
menu:setPosition(ccpAdd(ccp(size.width*0.5,size.height*0.5),ccp(100,0)))
else
menu:alignItemsVerticallyWithPadding(40) --垂直方向以padding间隙排列
menu:setPosition(ccpSub(ccp(size.width*0.5,size.height*0.5),ccp(100,0)))
end
end
end
local function playCallFunc(tag,sender)
tolua.cast(sender:getParent():getParent():getParent(),"CCLayerMultiplex"):switchTo(0)
end
local function highCallFunc(tag,sender)
local menu = tolua.cast(sender:getParent(),"CCMenu")
if menu:getOpacity() == 128 then
menu:setOpacity(255)
else
menu:setOpacity(128)
end
end
local function aboutCallFunc(tag,sender)
if isHorizontal == true then
setMenuVertical()
else
setMenuHorizontal()
end
isHorizontal = not isHorizontal
end
for i=0,1 do
local item1 = CCMenuItemImage:create("btn-play-normal.png","btn-play-selected.png") --参数1:正常状态的图片 参数2:按下去时的图片 参数3:不可点选下的图片
local item2 = CCMenuItemImage:create("btn-highscores-normal.png","btn-highscores-selected.png")
local item3 = CCMenuItemImage:create("btn-about-normal.png","btn-about-selected.png")
item1:registerScriptTapHandler(playCallFunc) --当这个菜单项被按下时候的回调函数(playCallFunc)
item2:registerScriptTapHandler(highCallFunc)
item3:registerScriptTapHandler(aboutCallFunc)
item1:setScaleX(1.5) --对精灵宽度进行缩放
item2:setScaleX(0.5)
item3:setScaleX(0.5)
local menu = CCMenu:create() --创建菜单,并加入3个菜单项
menu:addChild(item1)
menu:addChild(item2)
menu:addChild(item3)
layer1:addChild(menu,1,100+i)
end
setMenuHorizontal()
return layer1
end
示例图如下:
图1:
图2: