cocos 3.1.1 lua常有控件

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  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容