<pre name="code" class="plain">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)
</pre><pre name="code" class="plain">
</pre><pre name="code" class="plain"> -- 输入框 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
_________
注意如果图片使用某文件夹下的,需要放到res中,并且路径名字写到res,例如
local bgBox = cc.Sprite:create("res/RoleSelection/bgBox.png")
bgBox:setPosition(cc.p(origin.x + visibleSize.width*0.2, origin.y + visibleSize.height*0.45-150))
UILayer:addChild(bgBox)