cocos2d-x TestLua 之 CCMenuItemToggle菜单类

欢迎各位童鞋转载,转载请注明出处:http://blog.csdn.net/song_hui_xiang

作者新浪微博:http://weibo.com/u/3168848533

作者腾讯微博:http://t.qq.com/song_huixiang

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

2.CCMenuItem子类:

CCMenuItemImage:图片按钮菜单项(通过图片资源创建菜单项)

CCMenuItemFont:文本按钮菜单项(通过文本创建菜单项)

CCMenuItemLabel:文本标签按钮菜单项(通过文本标签创建菜单项)

CCMenuItemToggle:开关按钮菜单项(通过其它类如CCMenuItemImage,CCMenuItemFont,CCMenuItemSprite创建菜单项)

CCMenuItemSprite:精灵按钮菜单项(通过精灵CCSprite创建菜单项)
--开关菜单CCMenuItemToggle是一个容器,可以切换包含的子项(可以是任何的MenuItem对象)。
local function MenuLayer3()
    local layer2 = CCLayer:create()

    --用CCMenuItemFont创建CCMenuItemToggle 1
    CCMenuItemFont:setFontName("American Typewriter")
    CCMenuItemFont:setFontSize(18)
    local sound = CCMenuItemFont:create("sound")
    sound:setPosition(ccp(size.width*0.4,size.height*0.65))
    sound:setEnabled(false)

    CCMenuItemFont:setFontName("Marker felt")
    CCMenuItemFont:setFontSize(34)
    
    local toggle1 = CCMenuItemToggle:create(CCMenuItemFont:create("On"))
    toggle1:addSubItem(CCMenuItemFont:create("Off"))
    local function menuCallFunc(tag,sender)
        print("index ==",tolua.cast(sender,"CCMenuItemToggle"):getSelectedIndex()) --getSelectedIndex()是获取index的方法来做状态判断
    end
    toggle1:registerScriptTapHandler(menuCallFunc)
    toggle1:setPosition(ccp(size.width*0.4,size.height*0.6))
    
    --用CCMenuItemFont创建CCMenuItemToggle 2
    CCMenuItemFont:setFontName("American Typewriter")
    CCMenuItemFont:setFontSize(18)
    local music = CCMenuItemFont:create("music")
    music:setPosition(ccp(size.width*0.6,size.height*0.65))
    music:setEnabled(false)
    
    CCMenuItemFont:setFontName("Marker felt")
    CCMenuItemFont:setFontSize(34)
    
    local toggle2 = CCMenuItemToggle:create(CCMenuItemFont:create("On"))
    toggle2:addSubItem(CCMenuItemFont:create("Off"))
    toggle2:registerScriptTapHandler(menuCallFunc)
    toggle2:setPosition(ccp(size.width*0.6,size.height*0.6))
    
    --用CCMenuItemFont创建CCMenuItemToggle 3
    CCMenuItemFont:setFontName("American Typewriter")
    CCMenuItemFont:setFontSize(18)
    local quality = CCMenuItemFont:create("Quality")
    quality:setPosition(ccp(size.width*0.4,size.height*0.4))
    quality:setEnabled(false)

    CCMenuItemFont:setFontName("Marker felt")
    CCMenuItemFont:setFontSize(34)
    
    local toggle3 = CCMenuItemToggle:create(CCMenuItemFont:create("off")) --index = 0
    toggle3:setPosition(ccp(size.width*0.4,size.height*0.35))
    toggle3:registerScriptTapHandler(menuCallFunc)
    toggle3:addSubItem(CCMenuItemFont:create("30%"))    --index = 1
    toggle3:addSubItem(CCMenuItemFont:create("60%"))    --index = 2
    toggle3:addSubItem(CCMenuItemFont:create("100%"))   --index = 3
    toggle3:setSelectedIndex(2)  --setSelectedIndex()是设置index的方法来显示当前状态 当前显示60%
    
    --用CCMenuItemSprite创建 CCMenuItemToggle4 依此也可以用CCMenuItemImage就不再举例
    local fangyuli_sp1 = CCSprite:create("fangyuli_n.png")
    local fangyuli_sp2 = CCSprite:create("fangyuli_d.png")
    local fangyuli_item = CCMenuItemSprite:create(fangyuli_sp1,fangyuli_sp2)
    
    local gongjili_sp1 = CCSprite:create("gongjili_n.png")
    local gongjili_sp2 = CCSprite:create("gongjili_d.png")
    local gongjili_item = CCMenuItemSprite:create(gongjili_sp1,gongjili_sp2)
    
    local level_sp1 = CCSprite:create("level_n.png")
    local level_sp2 = CCSprite:create("level_d.png")
    local level_item = CCMenuItemSprite:create(level_sp1,level_sp2)
    
    local toggle4 = CCMenuItemToggle:create(fangyuli_item)
    toggle4:setPosition(ccp(size.width*0.6,size.height*0.35))
    toggle4:registerScriptTapHandler(menuCallFunc)
    toggle4:addSubItem(gongjili_item)
    toggle4:addSubItem(level_item)
    
    local function goBackCall(tag,sender)
        tolua.cast(sender:getParent():getParent():getParent(),"CCLayerMultiplex"):switchTo(0)
    end

    --go back
    local label = CCLabelBMFont:create("go back","bitmapFontTest3.fnt")
    local back = CCMenuItemLabel:create(label)
    back:setPosition(ccp(size.width*0.5,size.height*0.3))
    back:registerScriptTapHandler(goBackCall)
    
    local menu = CCMenu:create()
    menu:setPosition(ccp(0,0))
    menu:addChild(toggle1)
    menu:addChild(sound)
    menu:addChild(toggle2)
    menu:addChild(music)
    menu:addChild(quality)
    menu:addChild(toggle3)
    menu:addChild(back)
    menu:addChild(toggle4)
    
    layer2:addChild(menu)
    return layer2
end
示例图片:


你可能感兴趣的:(cocos2d-x TestLua 之 CCMenuItemToggle菜单类)