https://img-blog.csdnimg.cn/32db9ce43ef64316a2e37a31f4cee033.gif
编程小鱼酱yu612.com,点击前往

cocos2d-lua3.7控件篇(二)-进度条

通过认真学习,如果想要使用更多的进度条效果,我们应该去看cocos2d官方C++的demo,然后我们在用lua写



一、组件bar  目前写好了如下的效果。


代码如下:

local LoginScene = class("LoginScene", function()
    return display.newScene("LoginScene")
end)



function LoginScene:onInterval()
 
--实现一个进度条

--实现一个游客登录

end



function LoginScene:loadbar()


-- 创建并初始化进度,第一个参数是duration持续时间,100为进度  
  local to1 = cc.ProgressTo:create(2, 100)  
  local to2 = cc.ProgressTo:create(2, 100)  
  
  -- ProgressTimer是Node的子类。 该类根据百分比来渲染显示内部的Sprite对象。 变化方向包括径向,水平或者垂直方向。  
  local left1 = cc.ProgressTimer:create(cc.Sprite:create("dog.png"))  
  -- 设置进度计时的类型,这里是绕圆心  
  left1:setType(cc.PROGRESS_TIMER_TYPE_RADIAL)  
  -- 设置显示位置  
  left1:setPosition(cc.p(100, 100))  
  -- 运行动作  
  left1:runAction(cc.RepeatForever:create(to1))  
  -- 添加到层当中  
  left1:addTo(self) 
  
  -- 右边的方块  
  local right1 = cc.ProgressTimer:create(cc.Sprite:create("dog.png"))  
  -- 设置进度计时的类型  
  right1:setType(cc.PROGRESS_TIMER_TYPE_RADIAL)  
  -- Makes the ridial CCW  
  right1:setReverseDirection(true) -- 设置反向  
  -- 设置位置  
  right1:setPosition(cc.p(display.width - 100,display.height-100))  
  -- 运行动作,无限循环  
  right1:runAction(cc.RepeatForever:create(to2))  
  -- 添加到层当中  
  right1:addTo(self) 



  -- 创建进度条  
  local to1 = cc.ProgressTo:create(2.5, 100)  
  local to2 = cc.ProgressTo:create(2, 100)  
  
  -- 创建进度条的动画渲染器  
  local left = cc.ProgressTimer:create(cc.Sprite:create("dog.png"))  
  -- 设置进度条类型,这里是条形进度类型  
  left:setType(cc.PROGRESS_TIMER_TYPE_BAR)  
  -- 设置圆心位置为左下角  
  left:setMidpoint(cc.p(0, 0))  
  -- 设置横向进度条变化率,y=0意味着没有竖向的变化  
  left:setBarChangeRate(cc.p(1, 0))  
  -- 设置在x=100,y为屏幕宽度一半的位置  
  left:setPosition(cc.p(100, display.height / 2))  
  -- 执行动作  
  left:runAction(cc.RepeatForever:create(to1))  
  -- 添加到层中  
  left:addTo(self) 
    



  -- 进度条渲染器,这是右边演示的进度条  
  local right = cc.ProgressTimer:create(cc.Sprite:create("dog.png"))  
  -- 设置渲染类型  
  right:setType(cc.PROGRESS_TIMER_TYPE_BAR)  
  -- Setup for a bar starting from the left since the midpoint is 1 for the x  
  --  用来设定进度条横向前进的方向从左向右或是从右向左,这里是从右往左  
  right:setMidpoint(cc.p(1, 0))  
  -- Setup for a horizontal bar since the bar change rate is 0 for y meaning no vertical change  
  -- 用来设置进度条增长按横向或是按纵向增长,这里是横向增长  
  right:setBarChangeRate(cc.p(1, 0))  
  -- 设置渲染器到右边  
  right:setPosition(cc.p(display.width - 100, display.height / 2))  
  -- 让它运行一个无限循环的进度动画,进度变化由控制器2来控制  
  right:runAction(cc.RepeatForever:create(to2))  
  right:addTo(self)  
  

end


function LoginScene:ctor()

    self:loadbar()
end


function LoginScene:onEnter()
end

function LoginScene:onExit()
end

return LoginScene


二、点击增长

进度条其实也是比较简单的控件

详细的可以看UILoadingBar.h类中的实现

我们要是先如下的效果:






代码如下:

function MenuScene:ctor()
    local x = 100
    local loadBar = ccui.LoadingBar:create("loading.png",x)
    :setPosition(display.width/2,display.height/2)
    :setCapInsets(cc.rect(0,0,10,10))
    :addTo(self)

  local btn = ccui.Button:create("button/btnDog_N.png", "button/btnDog_P.png", "button/btnDog_D.png", 0)  
        :pos(display.cx, 100)  
        :addTo(self)  
        --按钮文字  
        btn:setTitleText("按钮")  
        --按钮的回调函数  
        btn:addTouchEventListener(function(sender, eventType)  
        if (0 == eventType)  then  
            print("pressed")  
            x= x-10
            loadBar:setPercent(x)
        end
    end)  


end

不会的话看C++文件其实很方便

posted @ 2017-12-04 13:47  鱼酱  阅读(799)  评论(0编辑  收藏  举报

https://img-blog.csdnimg.cn/32db9ce43ef64316a2e37a31f4cee033.gif
编程小鱼酱yu612.com,点击前往