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

举报
鱼酱 发表于 2022/01/06 22:32:38 2022/01/06
【摘要】 通过认真学习,如果想要使用更多的进度条效果,我们应该去看cocos2d官方C++的demo,然后我们在用lua写     一、组件bar  目前写好了如下的效果。   代码如下:   local LoginScene = class("LoginScene", func...

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

 

 

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

 

代码如下:

 


  
  1. local LoginScene = class("LoginScene", function()
  2. return display.newScene("LoginScene")
  3. end)
  4. function LoginScene:onInterval()
  5. --实现一个进度条
  6. --实现一个游客登录
  7. end
  8. function LoginScene:loadbar()
  9. -- 创建并初始化进度,第一个参数是duration持续时间,100为进度
  10. local to1 = cc.ProgressTo:create(2, 100)
  11. local to2 = cc.ProgressTo:create(2, 100)
  12. -- ProgressTimer是Node的子类。 该类根据百分比来渲染显示内部的Sprite对象。 变化方向包括径向,水平或者垂直方向。
  13. local left1 = cc.ProgressTimer:create(cc.Sprite:create("dog.png"))
  14. -- 设置进度计时的类型,这里是绕圆心
  15. left1:setType(cc.PROGRESS_TIMER_TYPE_RADIAL)
  16. -- 设置显示位置
  17. left1:setPosition(cc.p(100, 100))
  18. -- 运行动作
  19. left1:runAction(cc.RepeatForever:create(to1))
  20. -- 添加到层当中
  21. left1:addTo(self)
  22. -- 右边的方块
  23. local right1 = cc.ProgressTimer:create(cc.Sprite:create("dog.png"))
  24. -- 设置进度计时的类型
  25. right1:setType(cc.PROGRESS_TIMER_TYPE_RADIAL)
  26. -- Makes the ridial CCW
  27. right1:setReverseDirection(true) -- 设置反向
  28. -- 设置位置
  29. right1:setPosition(cc.p(display.width - 100,display.height-100))
  30. -- 运行动作,无限循环
  31. right1:runAction(cc.RepeatForever:create(to2))
  32. -- 添加到层当中
  33. right1:addTo(self)
  34. -- 创建进度条
  35. local to1 = cc.ProgressTo:create(2.5, 100)
  36. local to2 = cc.ProgressTo:create(2, 100)
  37. -- 创建进度条的动画渲染器
  38. local left = cc.ProgressTimer:create(cc.Sprite:create("dog.png"))
  39. -- 设置进度条类型,这里是条形进度类型
  40. left:setType(cc.PROGRESS_TIMER_TYPE_BAR)
  41. -- 设置圆心位置为左下角
  42. left:setMidpoint(cc.p(0, 0))
  43. -- 设置横向进度条变化率,y=0意味着没有竖向的变化
  44. left:setBarChangeRate(cc.p(1, 0))
  45. -- 设置在x=100,y为屏幕宽度一半的位置
  46. left:setPosition(cc.p(100, display.height / 2))
  47. -- 执行动作
  48. left:runAction(cc.RepeatForever:create(to1))
  49. -- 添加到层中
  50. left:addTo(self)
  51. -- 进度条渲染器,这是右边演示的进度条
  52. local right = cc.ProgressTimer:create(cc.Sprite:create("dog.png"))
  53. -- 设置渲染类型
  54. right:setType(cc.PROGRESS_TIMER_TYPE_BAR)
  55. -- Setup for a bar starting from the left since the midpoint is 1 for the x
  56. -- 用来设定进度条横向前进的方向从左向右或是从右向左,这里是从右往左
  57. right:setMidpoint(cc.p(1, 0))
  58. -- Setup for a horizontal bar since the bar change rate is 0 for y meaning no vertical change
  59. -- 用来设置进度条增长按横向或是按纵向增长,这里是横向增长
  60. right:setBarChangeRate(cc.p(1, 0))
  61. -- 设置渲染器到右边
  62. right:setPosition(cc.p(display.width - 100, display.height / 2))
  63. -- 让它运行一个无限循环的进度动画,进度变化由控制器2来控制
  64. right:runAction(cc.RepeatForever:create(to2))
  65. right:addTo(self)
  66. end
  67. function LoginScene:ctor()
  68. self:loadbar()
  69. end
  70. function LoginScene:onEnter()
  71. end
  72. function LoginScene:onExit()
  73. end
  74. return LoginScene

 

 

 

 

 

二、点击增长

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

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

我们要是先如下的效果:

 

 

 

 

代码如下:

 


  
  1. function MenuScene:ctor()
  2. local x = 100
  3. local loadBar = ccui.LoadingBar:create("loading.png",x)
  4. :setPosition(display.width/2,display.height/2)
  5. :setCapInsets(cc.rect(0,0,10,10))
  6. :addTo(self)
  7. local btn = ccui.Button:create("button/btnDog_N.png", "button/btnDog_P.png", "button/btnDog_D.png", 0)
  8. :pos(display.cx, 100)
  9. :addTo(self)
  10. --按钮文字
  11. btn:setTitleText("按钮")
  12. --按钮的回调函数
  13. btn:addTouchEventListener(function(sender, eventType)
  14. if (0 == eventType) then
  15. print("pressed")
  16. x= x-10
  17. loadBar:setPercent(x)
  18. end
  19. end)
  20. end

 

 

 

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

文章来源: yujiang.blog.csdn.net,作者:鱼酱2333,版权归原作者所有,如需转载,请联系作者。

原文链接:yujiang.blog.csdn.net/article/details/78708934

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。