基本控件使用(一)(遮罩、HTTP请求、ControlSlider、ControlSwitch、ProgressTo)

在大厅场景中,我们只练习一些基本控件的使用:裁剪滚动条、屏蔽触摸、tableview、scrollview、刷新控件http请求、内嵌网页,定时器。

1)    裁剪区域(公告中常用)

local noticeBg = cc.Sprite:create(“hall/noticeBg.png”)

noticeBg:setPosition(cc.p(size.width/2, size.height*0.77+10))

layer:addChild(noticeBg)

local labelNoticeStr = cc.Label:createWithSystemFont(“你好,Lua,我是新手,请指教”, “Arial”, 32)

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

labelNoticeStr:setPosition(cc.p(noticeBg:getPositionX()+noticeBg:getContentSize().width/2,size.height*0.77+10))

//设置遮罩

local drawNode = cc.DrawNode:create()

local points ={cc.p(size.width/2-noticeBg:getContentSize().width/2+56, size.height*0.77-16),

                                                                                                            cc.p(size.width/2+noticeBg:getContentSize().width/2-15,size.height*0.77-16),

                                                                                                            cc.p(size.width/2+noticeBg:getContentSize().width/2-15,size.height*0.77+36),

                                                                                                            cc.p(size.width/2-noticeBg:getContentSize().width/2+56,size.height*0.77+36)

                                                                 }

drawNode:drawPolygon(points, table.getn(points), cc.c4f(255,255, 255, 255), 2, cc.c4f(255, 255, 255, 255))

local cliper = cc.ClippingNode:create()

cliper:setStencil(drawNode)

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

cliper:addChild(labelNoticeStr)

layer:addChild(cliper, 1)

//设置文字循环滚动

local fWidth = labelNoticeStr:getContentSize().width

local moveTo =cc.MoveTo:create((fWidth+noticeBg:getContentSize().width-71)/200,cc.p(noticeBg:getPositionX()-noticeBg:getContentSize().width/2-fWidth,size.height*0.77+10))

local moveTo1 = cc.MoveTo:create(0,cc.p(noticeBg:getContentSize().width/2+noticeBg:getPositionX(),size.height*0.77+10))

local seq = cc.Sequence:create(moveTo, moveTo1)

labelNoticeStr:runAction(cc.RepeatForever:create(seq))

这样就实现了文字的遮罩,实现图片遮罩也类似。

2)Http请求

上面的遮罩中,我们的文字是客户端固定好了,但是需求往往不是这样,而是可能要发生变化的,所以这时我们从网页上获取这些内容。

在lua中,http请求用的是XMLHttpRequest这个类,具体用法如下:

local url = string.format(“http://www.baidu.com”)

local xhr = cc.XMLHttpRequest:new()

xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON

xhr:open(“GET”, url)

local function onReadyStateChange()

                      ifxhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then

                                           print(xhr.responseText:)                                        --responseText就是请求返回的内容

                                           --这里可以对内容进行解析,然后做相应的逻辑处理操作

                      end

                      xhr.unregisterScriptHandler()

end

xhr:registerScriptHandler(onReadyStateChange)

xhr:send()

上面这个http请求方式是GET请求,有时候我们也要使用POST请求,只需要修改

xhr:open(“POST”, url)

3)设置界面(slider、开关控件switch)

local sliderMusic = cc.ControlSlider:create("setting/effort2.png","setting/effort1.png", "setting/effortBtn.png")

sliderMusic:setPosition(ccp(bg:getContentSize().width/2+60,bg:getContentSize().height/5*4-72))

sliderMusic:setTag(102)

sliderMusic:setMinimumValue(0.0)

sliderMusic:setMaximumValue(1.0)

sliderMusic:setValue(1.0)

bg:addChild(sliderMusic)

 

local switchShadow = cc.ControlSwitch:create(cc.Sprite:create("setting/switch_mark.png"),cc.Sprite:create("setting/yinyueOn.png"),cc.Sprite:create("setting/yinyueOff.png"),cc.Sprite:create("setting/yinyueBtn1.png"), cc.Label:createWithSystemFont("ON","Arial", 32),cc.Label:createWithSystemFont("OFF","Arial", 32))

switchShadow:setPosition(cc.p(bg:getContentSize().width/3+15,bg:getContentSize().height/4+28))

switchShadow:setTag(104)

switchShadow:setOn(true)

bg:addChild(switchShadow)

local function funcValueChanged(pSender)

      local slider = pSender

      local tag = slider:getTag()

                      if tag == 102 then

                                           print("sliderMusicclick")

                      elseif tag == 104 then

                                           print("switchShadowclick")

                      end

end

sliderMusic:registerControlEventHandler(funcValueChanged,cc.CONTROL_EVENTTYPE_VALUE_CHANGED)

switchShadow:registerControlEventHandler(funcValueChanged,cc.CONTROL_EVENTTYPE_VALUE_CHANGED)

4)刷新控件(ProgressTo

local progressTo = cc.ProgressTo:create(2, 100)  --持续时间  进度百分比

local progressTimer =cc.ProgressTimer:create(cc.Sprite:create("hall/backItem.png"))

--progressTimer:setMidpoint(cc.p(0, 0))                             --进度条起始点(0,0)表示左下角

--progressTimer:setBarChangeRate(cc.p(1, 0))                --进度条动画防线(1,0)表示横向(0,1)表示纵向

--progressTimer:setType(cc.PROGRESS_TIMER_TYPE_BAR)--进度条类型(条形进度类型)

progressTimer:setType(cc.PROGRESS_TIMER_TYPE_RADIAL--以原点为中心刷新

bg:addChild(progressTimer)

progressTimer:setPosition(cc.p(progressTimer:getContentSize().width+10,bg:getContentSize().height-progressTimer:getContentSize().height-10))

progressTimer:runAction(progressTo)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值