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
网友评论