美文网首页
cocos 3.1.1 lua常有控件

cocos 3.1.1 lua常有控件

作者: a522050761d0 | 来源:发表于2018-01-06 10:44 被阅读0次

    require "Cocos2d"  

    require"Cocos2dConstants"  

    -- cclog  

    cclog = function(...)  

        print(string.format(...))  

    end  

    --for CCLuaEngine traceback  

    function __G__TRACKBACK__(msg)  

    cclog("----------------------------------------")  

    cclog("LUA ERROR: " .. tostring(msg) .. "\n")  

        cclog(debug.traceback())  

    cclog("----------------------------------------")  

    return msg  

    end  

    local function main()  

    collectgarbage("collect")  

        -- avoid memory leak  

    collectgarbage("setpause", 100)  

    collectgarbage("setstepmul", 5000)  

    cc.FileUtils:getInstance():addSearchResolutionsOrder("src");  

    cc.FileUtils:getInstance():addSearchResolutionsOrder("res");  

        --support debug  

        local targetPlatform = cc.Application:getInstance():getTargetPlatform()  

    if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform) or   

           (cc.PLATFORM_OS_ANDROID == targetPlatform) or (cc.PLATFORM_OS_WINDOWS == targetPlatform) or  

           (cc.PLATFORM_OS_MAC == targetPlatform) then  

    cclog("result is ")  

    --require('debugger')()  

        end  

        ---------------  

        local visibleSize = cc.Director:getInstance():getVisibleSize()  

        local origin = cc.Director:getInstance():getVisibleOrigin()  

        -- create Layer  

        local function createUILayer()  

            local UILayer = cc.Layer:create()  

            --图片精灵  

    local bg = cc.Sprite:create("bg.jpg")  

            bg:setPosition(origin.x + visibleSize.width / 2 + 80, origin.y + visibleSize.height / 2)  

            UILayer:addChild(bg)  

            ---文字标签  

    local txt = cc.LabelTTF:create("zhong中文123456780", "Arial", 20)    

            txt:setColor( cc.c3b( 255, 255, 255 ) )    

            txt:setAnchorPoint(cc.p(0,0))  

            txt:setPosition( cc.p( 350,  20 ) )  

            UILayer:addChild(txt)        

            --纯色精灵  

            local boxSprite = cc.Sprite:create()  

            boxSprite:setTextureRect(cc.rect(0,0,80,80))  

            boxSprite:setAnchorPoint(cc.p(0,0))  

            boxSprite:setPosition( cc.p( 350,  40 ) )  

            --cocosdx自动默认是白色  

            --boxSprite:setColor(cc.c3b(255,255,255))  

            UILayer:addChild(boxSprite,8)  

            -- boxSprite:setGlobalZOrder(8)  

            -- 菜单按钮  

            local menuTools  

            local function menuCallbackOpenPopup()  

    cclog("ttttttttt")  

            end  

    -- add the left-bottom"tools" menu to invoke menuPopup  

    local menuToolsItem = cc.MenuItemImage:create("back.png", "back2.png")  

            menuToolsItem:setPosition(0, 0)  

            menuToolsItem:registerScriptTapHandler(menuCallbackOpenPopup)  

            menuTools = cc.Menu:create(menuToolsItem)  

            local itemWidth = menuToolsItem:getContentSize().width  

            local itemHeight = menuToolsItem:getContentSize().height  

            menuTools:setPosition(350, 80)  

            UILayer:addChild(menuTools,15)  

            -- menuTools:setlocalZOrder(5)  

            -- menuTools  

            -- Scale9Sprite 9宫格精灵  

    local temp=cc.Sprite:create("btntest0.png");  

            local size=temp:getContentSize();  

            local fullRect=cc.rect(0,0, size.width, size.height)  

            local insetRect = cc.rect(20,20,size.width-40, size.height-40);  

    local backGround = cc.Scale9Sprite:create("btntest0.png", fullRect, insetRect )  

            backGround:setPreferredSize(cc.size(100, 50))  

            backGround:setPosition(cc.p(350, 130))  

            backGround:setAnchorPoint(cc.p(0,0))  

            UILayer:addChild(backGround)  

            --进度条精灵  

            -- 创建并初始化进度,第一个参数是duration持续时间,100为进度  

            local to1 = cc.ProgressTo:create(2, 100)  

            local to2 = cc.ProgressTo:create(1, 100)  

            --创建进度条精灵  

    local progressSprite=cc.Sprite:create("bgtime2.png")  

            progress1=cc.ProgressTimer:create(progressSprite)  

            --设置进度条类型为BAR    

    progress1:setType(cc.PROGRESS_TIMER_TYPE_BAR)--enum  Type { RADIAL, BAR }  

            progress1:setPosition(cc.p(200, 150))  

            --进度动画运动方向,可以多试几个值,看看效果  

    --进度条宽高变化//从左到右  

            progress1:setMidpoint(cc.p(0, 0))--注意这里是cc.p  c++中是Vec2  

            progress1:setBarChangeRate(cc.p(1, 0))  

    --进度条宽高变化//从下到上   

            -- progress1:setMidpoint(cc.p(0, 0))  

            -- progress1:setBarChangeRate(cc.p(0, 1))  

    --//进度条宽高变化//从左到右    

            -- progress1:setMidpoint(cc.p(1, 0))  

            -- progress1:setBarChangeRate(cc.p(1, 0))  

    --//    //进度条宽高变化//从上到下   

            -- progress1:setMidpoint(cc.p(1, 0))  

            -- progress1:setBarChangeRate(cc.p(0, 1))  

            progress1:setPercentage(0)--默认是零,可以自行修改  

            UILayer:addChild(progress1, 1)   

            --进度条效果设置 方这里提供了两种  

            --方案1:执行动作  

            --需要有这个runAction才会有动作效果  

            -- progress1:runAction(cc.RepeatForever:create(to1))  

            --方案2:定时器+setPercentage完成(见后面定时器中可见)  

            --圆形的进度条1 顺时针  

    local progress3Sprite = cc.Sprite:create("menu1.png")  

            progress3 = cc.ProgressTimer:create(progress3Sprite)  

            progress3:setType(cc.PROGRESS_TIMER_TYPE_RADIAL)--设置类型为圆形    

            progress3:setPosition(cc.p(250, 200))  

            progress3:setScale(0.8)    

    progress3:setReverseDirection(false) -- 这是默认的顺时针  

            progress3:setPercentage(0)--默认是零,可以自行修改  

            -- progress3:runAction(cc.RepeatForever:create(to1))  

            UILayer:addChild(progress3, 1)  

            --如果没有runAction是可以直接removeFromParent  如果有runAction需要先停掉  

            ----相同的action会导致报错  最好用不同的action  

            -- progress3:stopAction(cc.RepeatForever:create(to1))  

    -- progress3:removeFromParent(true)  

            --圆形的进度条2 逆时针  

    local progress2Sprite = cc.Sprite:create("menu1.png")  

            progress2 = cc.ProgressTimer:create(progress2Sprite)  

            progress2:setType(cc.PROGRESS_TIMER_TYPE_RADIAL)--设置类型为圆形  

            progress2:setPosition(cc.p(200, 200))  

            progress2:setScale(0.8)  

    progress2:setReverseDirection(true) -- 默认是顺时针 这里设置反向逆时针  

            progress2:runAction(cc.RepeatForever:create(to2))  

            UILayer:addChild(progress2, 1)  

            --[[  

            这里有两个方法可能是比较容易疑惑的:  

            progress:setMidpoint(cc.p(0, 0))  

            setMidpoint()函数是设置进度条的起始点,(0,y)表示最左边,(1,y)表示最右边,(x,1)表示最上面,(x,0)表示最下面。  

            progress:setBarChangeRate(cc.p(1, 0))  

            setBarChangeRate()函数是用来设置进度条动画方向的,(1,0)表示横方向,(0,1)表示纵方向  

            ]]  

            --     cc.Label:createWithTTF  -- 添加标签  cocos ide中可以用   xcode中会报错  

            -- -- 通过初始化文本、字体,字体大小来创建一个Label  

    -- local label = cc.Label:createWithTTF("New Renderer", "fonts/arial.ttf", 36)  

            -- label:setColor(cc.c3b(255,255,0)) -- 设置颜色为黄色  

            -- UILayer:addChild(label, 1, 10000) -- 第一个参数为node,第二个参数为zorder,第三个参数是tag  

            -- label:setPosition( cc.p(80, 80))-- 设置位置top,center  

            --创建一个标签,显示进度  

    local numsTTF = cc.LabelTTF:create("0", "Thonburi", 18)  

            numsTTF:setPosition(cc.p(250, 150))  

            UILayer:addChild(numsTTF, 1)  

            --Lua 实现定时器功能  

            local scheduler = CCDirector:sharedDirector():getScheduler()  

            local run_logic = nil  

            local x=0  

            --函数定义  

            local function Update()  

                -- print(11)  

    if x<100 then  

                    x=x+5  

                    progress1:setPercentage(x)--这里以设置进度条1作为例子  

                    progress3:setPercentage(x)  

    numsTTF:setString(""..x.."%")  --这里以设置文字numsTTF的内容作为例子,注意这里的x是数字,需要转换为字符  

                end  

            end  

            --开始倒计时 每1秒调用一次Update方法  

    run_logic = scheduler:scheduleScriptFunc(Update,1,false)  --第一个是调用的函数 第二个参数是时间  

            --退出界面 卸载定时器  

            local function onNodeEvent(event)  

    if "exit" == event then  

                   cc.Director:getInstance():getScheduler():unscheduleScriptEntry(run_logic)  

               end  

            end  

            UILayer:registerScriptHandler(onNodeEvent)  

    [plain] view plain copy

      

    [plain] view plain copy

            -- 输入框  

            EditName = cc.EditBox:create(cc.size(180, 40), cc.Scale9Sprite:create("btntest0.png"))  

            --   EditName = cc.EditBox:create(editBoxSize, cc.Scale9Sprite:create("btntest0.png"))  

            EditName:setPosition(240, 100)  

            -- --密码输入模式  

            -- EditName:setInputFlag(cc.EDITBOX_INPUT_FLAG_PASSWORD)  

            -- --单行输入  

            -- --EditName:setInputMode(cc.EDITBOX_INPUT_MODE_SINGLELINE)  

            UILayer:addChild(EditName)  

            --         -- 开启委托  

            --         -- EditName:setDelegate(UILayer)  

            -- -- local targetPlatform = cc.Application:getInstance():getTargetPlatform()  

            -- -- if kTargetIphone == targetPlatform or kTargetIpad == targetPlatform then  

            -- --    EditName:setFontName("Paint Boy")  

            -- -- else  

            -- --     EditName:setFontName("fonts/Paint Boy.ttf")  

            -- -- end  

            -- --输入字符个数  

            -- -- EditName:setMaxLength(10)  

            -- -- EditName:setMaxLength(6)  

            -- --输入字体尺寸  

            EditName:setFontSize(25)  

            -- EditName:setFontSize(50)  

            -- --输入字体颜色  

            -- -- EditName:setFontColor(cc.c3b(255,0,0))  

            -- EditName:setFontColor(cc.c3b(0,255,0))  

            -- -- EditName:setFontColor(cc.c3b(5, 4, 10))  

            -- --设置editBox输入为空时的显示状态  

            -- EditName:setPlaceHolder("Nameiiiiiiiiii:")  

            -- -- EditName:setPlaceHolder("点击输入姓名")   

            -- --输入前默认显示字体颜色  

            -- EditName:setPlaceholderFontColor(cc.c3b(255,255,255))  

            -- -- EditName:setMaxLength(8)  

            -- EditName:setReturnType(cc.KEYBOARD_RETURNTYPE_DONE )  

            -- -- --Handler--事件响应  

            -- -- EditName:registerScriptEditBoxHandler(editBoxTextEventHandle)  

            return UILayer  

        end  

        -- run场景 add图层  

        local sceneGame = cc.Scene:create()  

        sceneGame:addChild(createUILayer())  

        if cc.Director:getInstance():getRunningScene() then  

             cc.Director:getInstance():replaceScene(sceneGame)  

        else  

            cc.Director:getInstance():runWithScene(sceneGame)  

        end  

    end  

    local status, msg = xpcall(main, __G__TRACKBACK__)  

    if not status then  

        error(msg)  

    end  

    相关文章

      网友评论

          本文标题:cocos 3.1.1 lua常有控件

          本文链接:https://www.haomeiwen.com/subject/cdtynxtx.html