欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

微信小程序实现圆形进度条动画

程序员文章站 2023-09-08 09:19:56
本文实例为大家分享了微信小程序动画之圆形进度条,供大家参考,具体内容如下 上图: 代码: js: //获取应用实例 var app = getapp(...

本文实例为大家分享了微信小程序动画之圆形进度条,供大家参考,具体内容如下

上图:

微信小程序实现圆形进度条动画

代码:

js:

//获取应用实例
var app = getapp()

var interval;
var varname;
var ctx = wx.createcanvascontext('canvasarccir');

page({
 data: {
 },
 drawcircle: function () {
  clearinterval(varname);
  function drawarc(s, e) {
   ctx.setfillstyle('white');
   ctx.clearrect(0, 0, 200, 200);
   ctx.draw();
   var x = 100, y = 100, radius = 96;
   ctx.setlinewidth(7);
   ctx.setstrokestyle('#bfefff');
   ctx.setlinecap('round');
   ctx.beginpath();
   ctx.arc(x, y, radius, s, e, false);
   ctx.stroke()
   ctx.draw()
  }
  var step = 1, startangle = 1.5 * math.pi, endangle = 0;
  var animation_interval = 1000, n = 60;
  var animation = function () {
   if (step <= n) {
    endangle = step * 8 * math.pi / n + 1.5 * math.pi;
    drawarc(startangle, endangle);
    step++;
   } else {
    clearinterval(varname);
   }
  };
  varname = setinterval(animation, animation_interval);
 },
 onready: function () {
  //创建并返回绘图上下文context对象。
  var cxt_arc = wx.createcanvascontext('canvascircle');
  cxt_arc.setlinewidth(8);
  cxt_arc.setstrokestyle('#ededed');
  cxt_arc.setlinecap('round');
  cxt_arc.beginpath();
  cxt_arc.arc(100, 100, 96, 0, 2 * math.pi, false);
  cxt_arc.stroke();
  cxt_arc.draw();
 },
 onload: function (options) {

 }
})

wxml:

<view class="wrap">
 <view class="circle-box">
  <canvas class="circle" style="width:200px; height:200px;" canvas-id="canvasarccir">
  </canvas>
  <canvas class="circle" style="z-index: -5; width:200px; height:200px;" canvas-id="canvascircle">
  </canvas>
  <view class="draw_btn" bindtap="drawcircle">点击开始</view>
 </view>
</view>

wxss:

page {
 width: 100%;
 height: 100%;
 background-color: #fff;
}

.circle-box {
 text-align: center;
 margin-top: 10vw;
}

.circle {
 position: absolute;
 left: 0;
 right: 0;
 margin: auto;
}

.draw_btn {
 width: 28vw;
 position: absolute;
 top: 31vw;
 right: 0;
 left: 0;
 margin: auto;
 border: 1px #0d0d0d solid;
  background-color: #bfefff;
 border-radius: 5vw;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。