本文整理 Cocos2d-x Lua 中几种常见菜单(Menu)的创建方式,包括文本菜单、精灵菜单、图片菜单以及开关菜单。每种菜单都通过 cc.Menu 承载对应的 MenuItem,并通过 registerScriptTapHandler 注册点击回调。
示例代码
local function callBack(send)
print("click the menu")
end
--文本菜单
local menu_1=cc.MenuItemFont:create("exit")
menu_1:registerScriptTapHandler(callBack)
menu_1:setPosition(200,200)
local menu1=cc.Menu:create(menu_1)
menu1:setPosition(0,0)
-- layer:addChild(menu1)
--精灵菜单
local s1=cc.Sprite:create("off.png")
local s2=cc.Sprite:create("off.png")
s1:setOpacity(80)
local menu_2=cc.MenuItemSprite:create(s1,s2,s1)
menu_2:registerScriptTapHandler(callBack)
menu_2:setPosition(200,150)
local menu2=cc.Menu:create(menu_2)
menu2:setPosition(0,0)
layer:addChild(menu2)
--图片菜单
local menu_3=cc.MenuItemImage:create("on.png","off.png","on.png")--正常,点中,禁止
menu_3:registerScriptTapHandler(callBack)
menu_3:setPosition(200,50)
local menu3=cc.Menu:create(menu_3)
menu3:setPosition(0,0)
layer:addChild(menu3)
--开关菜单
--回调函数
local isMusic=true
local function callBack(send)
isMusic = not isMusic
print(tostring(isMusic))
end
local menu_on=cc.MenuItemImage:create("on.png","on.png","on.png")
local menu_off=cc.MenuItemImage:create("off.png","off.png","off.png")
--创建菜单Item
local menu1=cc.MenuItemToggle:create(menu_on,menu_off)
menu1:setPosition(200,200)
menu1:registerScriptTapHandler(callBack)
--实例化菜单
local menu=cc.Menu:create(menu1)
menu:setPosition(0,0)
layer:addChild(menu)
要点说明
- 文本菜单:使用
cc.MenuItemFont创建纯文字按钮,通过字符串指定显示文本。 - 精灵菜单:使用
cc.MenuItemSprite,传入三个cc.Sprite分别对应正常、点中、禁用三种状态,示例中通过setOpacity调整透明度来区分。 - 图片菜单:使用
cc.MenuItemImage,直接传入三张图片文件名(正常、点中、禁止)即可生成按钮。 - 开关菜单:使用
cc.MenuItemToggle,在两个(或多个)菜单项之间切换,常用于开关类选项(如示例中的背景音乐开关)。
所有 MenuItem 创建完成后,都需要通过 cc.Menu:create 封装成一个 Menu 对象,并调用 layer:addChild 才能真正显示到场景中。