• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Cocos2d-x 3.1.1 Lua示例 ActionsProgressTest(进度条)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

https://blog.csdn.net/wwj_748/article/details/37819787

本篇博客介绍Cocos2d-x中的进度条动画,进度条涉及以下几个重要的类和方法,笔者来给大家详细讲解一下:

  ProgressTo类:进度控制器,控制进度从当前进度变化到某个值。其实它就是一个动作,控制进度条变化。

  它的类继承图如下:


  ProgressTimer是Node的子类。 该类根据百分比来渲染显示内部的Sprite对象。 变化方向包括径向,水平或者垂直方向。

  ProgressFromTo:FromTo进度控制器,控制进度从一个指定值到另一个值的变化.

   

  这里有两个方法可能是大家比较疑惑的:

  left:setMidpoint(cc.p(0, 0))

  setMidpoint()函数是设置进度条的起始点,(0,y)表示最左边,(1,,y)表示最右边,(x,1)表示最上面,(x,0)表示最下面。

  right:setBarChangeRate(cc.p(1, 0))

 setBarChangeRate()函数是用来设置进度条动画方向的,(1,0)表示横方向,(0,1)表示纵方向




 下面笔者把例子中的代码贴出来,已经进行了详细的注释,对应了每个进度动画效果,如有疑问,可以留言或者加入笔者所创建的群:299402133

[javascript] view plain copy
  1. -- 获得屏幕大小  
  2. local s = cc.Director:getInstance():getWinSize()  
  3.   
  4. ------------------------------------  
  5. --  SpriteProgressToRadial 绕圆心旋转的进度条、  
  6. --  圆形进度动画是一个绕中心将精灵边缘扫描一圈在这个过程中消失的动画消果。  
  7. ------------------------------------  
  8. local function SpriteProgressToRadial()  
  9.   -- 创建层  
  10.   local layer = cc.Layer:create()  
  11.   -- 初始化层  
  12.   Helper.initWithLayer(layer)  
  13.   -- 创建并初始化进度,第一个参数是duration持续时间,100为进度  
  14.   local to1 = cc.ProgressTo:create(2, 100)  
  15.   local to2 = cc.ProgressTo:create(2, 100)  
  16.   
  17.   -- ProgressTimer是Node的子类。 该类根据百分比来渲染显示内部的Sprite对象。 变化方向包括径向,水平或者垂直方向。  
  18.   local left = cc.ProgressTimer:create(cc.Sprite:create(s_pPathSister1))  
  19.   -- 设置进度计时的类型,这里是绕圆心  
  20.   left:setType(cc.PROGRESS_TIMER_TYPE_RADIAL)  
  21.   -- 设置显示位置  
  22.   left:setPosition(cc.p(100, s.height / 2))  
  23.   -- 运行动作  
  24.   left:runAction(cc.RepeatForever:create(to1))  
  25.   -- 添加到层当中  
  26.   layer:addChild(left)  
  27.   
  28.   -- 右边的方块  
  29.   local right = cc.ProgressTimer:create(cc.Sprite:create(s_pPathBlock))  
  30.   -- 设置进度计时的类型  
  31.   right:setType(cc.PROGRESS_TIMER_TYPE_RADIAL)  
  32.   -- Makes the ridial CCW  
  33.   right:setReverseDirection(true) -- 设置反向  
  34.   -- 设置位置  
  35.   right:setPosition(cc.p(s.width - 100, s.height / 2))  
  36.   -- 运行动作,无限循环  
  37.   right:runAction(cc.RepeatForever:create(to2))  
  38.   -- 添加到层当中  
  39.   layer:addChild(right)  
  40.   
  41.   -- 设置标题  
  42.   Helper.subtitleLabel:setString("ProgressTo Radial")  
  43.   return layer  
  44. end  
  45.   
  46. ------------------------------------  
  47. --  SpriteProgressToHorizontal 条形的横向进度动画演示  
  48. ------------------------------------  
  49. local function SpriteProgressToHorizontal()  
  50.   -- 创建层  
  51.   local layer = cc.Layer:create()  
  52.   -- 初始化层  
  53.   Helper.initWithLayer(layer)  
  54.   
  55.   -- 创建进度条  
  56.   local to1 = cc.ProgressTo:create(2, 100)  
  57.   local to2 = cc.ProgressTo:create(2, 100)  
  58.   
  59.   -- 创建进度条的动画渲染器  
  60.   local left = cc.ProgressTimer:create(cc.Sprite:create(s_pPathSister1))  
  61.   -- 设置进度条类型,这里是条形进度类型  
  62.   left:setType(cc.PROGRESS_TIMER_TYPE_BAR)  
  63.   -- 设置圆心位置为左下角  
  64.   left:setMidpoint(cc.p(0, 0))  
  65.   -- 设置横向进度条变化率,y=0意味着没有竖向的变化  
  66.   left:setBarChangeRate(cc.p(1, 0))  
  67.   -- 设置在x=100,y为屏幕宽度一半的位置  
  68.   left:setPosition(cc.p(100, s.height / 2))  
  69.   -- 执行动作  
  70.   left:runAction(cc.RepeatForever:create(to1))  
  71.   -- 添加到层中  
  72.   layer:addChild(left)  
  73.   
  74.   -- 进度条渲染器,这是右边演示的进度条  
  75.   local right = cc.ProgressTimer:create(cc.Sprite:create(s_pPathSister2))  
  76.   -- 设置渲染类型  
  77.   right:setType(cc.PROGRESS_TIMER_TYPE_BAR)  
  78.   -- Setup for a bar starting from the left since the midpoint is 1 for the x  
  79.   --  用来设定进度条横向前进的方向从左向右或是从右向左,这里是从右往左  
  80.   right:setMidpoint(cc.p(1, 0))  
  81.   -- Setup for a horizontal bar since the bar change rate is 0 for y meaning no vertical change  
  82.   -- 用来设置进度条增长按横向或是按纵向增长,这里是横向增长  
  83.   right:setBarChangeRate(cc.p(1, 0))  
  84.   -- 设置渲染器到右边  
  85.   right:setPosition(cc.p(s.width - 100, s.height / 2))  
  86.   -- 让它运行一个无限循环的进度动画,进度变化由控制器2来控制  
  87.   right:runAction(cc.RepeatForever:create(to2))  
  88.   layer:addChild(right)  
  89.   
  90.   -- 标题  
  91.   Helper.subtitleLabel:setString("ProgressTo Horizontal")  
  92.   return layer  
  93. end  
  94.   
  95. ------------------------------------  
  96. --  SpriteProgressToVertical 纵向的条形进度动画演示  
  97. ------------------------------------  
  98. local function SpriteProgressToVertical()  
  99.   -- 创建层  
  100.   local layer = cc.Layer:create()  
  101.   -- 初始化层  
  102.   Helper.initWithLayer(layer)  
  103.   
  104.   -- 创建两个进度动画的控制器.2秒进度值变化到100  
  105.   local to1 = cc.ProgressTo:create(2, 100)  
  106.   local to2 = cc.ProgressTo:create(2, 100)  
  107.   
  108.   -- 创建进度条渲染器  
  109.   local left = cc.ProgressTimer:create(cc.Sprite:create(s_pPathSister1))  
  110.   -- 设置渲染器进度条类型  
  111.   left:setType(cc.PROGRESS_TIMER_TYPE_BAR)  
  112.   
  113.   -- 设置进度起点在左下角  
  114.   left:setMidpoint(cc.p(0,0))  
  115.   -- 设置进度条横向无变化,纵向变化  
  116.   left:setBarChangeRate(cc.p(0, 1))  
  117.   -- 设置渲染器的位置  
  118.   left:setPosition(cc.p(100, s.height / 2))  
  119.   -- 无限循环第一个动画控制器  
  120.   left:runAction(cc.RepeatForever:create(to1))  
  121.   -- 添加渲染器到层中  
  122.   layer:addChild(left)  
  123.   
  124.   -- 创建右边的进度条渲染器  
  125.   local right = cc.ProgressTimer:create(cc.Sprite:create(s_pPathSister2))  
  126.   -- 设置渲染类型  
  127.   right:setType(cc.PROGRESS_TIMER_TYPE_BAR)  
  128.   -- 设置中心点在左上角  
  129.   right:setMidpoint(cc.p(0, 1))  
  130.   -- 设置进度条纵方向变化,横方向不变化  
  131.   right:setBarChangeRate(cc.p(0, 1))  
  132.   -- 设置显示位置  
  133.   right:setPosition(cc.p(s.width - 100, s.height / 2))  
  134.   -- 让它运行一个无限循环的进度动画,进度变化由控制器2来控制  
  135.   right:runAction(cc.RepeatForever:create(to2))  
  136.   layer:addChild(right)  
  137.   
  138.   -- 设置子标题  
  139.   Helper.subtitleLabel:setString("ProgressTo Vertical")  
  140.   return layer  
  141. end  
  142.   
  143. ------------------------------------  
  144. --  SpriteProgressToRadialMidpointChanged  
  145. --  中点可改变的绕中点旋转的进度动画  
  146. ------------------------------------  
  147. local function SpriteProgressToRadialMidpointChanged()  
  148.   -- 创建层  

  149. 鲜花

    握手

    雷人

    路过

    鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Redis之eval+lua实现初步发布时间:2022-07-22
下一篇:
嵌入式Lua开发环境的搭建发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap