您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x TestLua 之 CCMenuItemImage 菜单类

2013-10-15 00:28 477 查看

感谢点评与关注,欢迎转载与分享。

勤奋努力,持之以恒!


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:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: