首页 > 编程语言 >直播app源码,canvas 环形刻度 进度条

直播app源码,canvas 环形刻度 进度条

时间:2023-07-17 14:11:42浏览次数:39  
标签:canvas obj 进度条 ctx num 源码 刻度 var

直播app源码,canvas 环形刻度 进度条

 

let ctx = null
let obj = {}
Page({
  data: {
  },
  onl oad: function (options) {},
  
  onReady() {
    this.animation()
  },
  animation() {
    const query = wx.createSelectorQuery()
    query.select('#firstCanvas')
      .fields({
        node: true,
        size: true
      })
      .exec((res) => {
        const canvas = res[0].node
        ctx = canvas.getContext('2d')
        obj = {
          width: 300,
          height: 300,
          dx: 20, // 刻度宽度
          dy: 4, // 刻度高度
          num: 24, // 刻度条数
          r: 70, // 半径
          start: -90, // 开始角度,与结束角度相对称
          progress: 75, // 显示进度 (单位百分比)
          index: 0, // 开始刻度
          defaultColor: '#dee1e4', // 开始颜色
          activeColor: '#5CCCFF' // 进度条颜色
        };
        this.setData({
          process: obj.progress
        })
        obj.deg = (180 - 2 * obj.start) / obj.num;
        canvas.width = obj.width;
        canvas.height = obj.height;
        for (var x = 0; x < obj.num; x++) { //灰色刻度线
          draw(x, obj.defaultColor);
        }
        function draw(x, color) { // 画出环形刻度线
          ctx.save();
          var deg = Math.PI / 180 * (obj.start + obj.deg * x); // 角度换算弧度
          var offsetY = -(Math.sin(deg) * obj.r); // 计算刻度Y轴位置
          var offsetX = -(Math.cos(deg) * obj.r); // 计算刻度X轴位置
          ctx.fillStyle = color;
          ctx.translate(obj.width / 2 - offsetX, obj.height / 2 - offsetY); // 修改画布坐标原点
          ctx.rotate(deg); // 旋转刻度
          ctx.fillRect(0, 0, obj.dx, obj.dy); // 画出刻度
          ctx.restore();
        }
        function animate(s, time) {
          if (obj.progress == 0) { // 进度为0直接退出函数
            return false;
          }
          draw(s, obj.activeColor);
          var num = obj.progress * (obj.num / 100); //格数计算
          var timmer = setTimeout(function () {
            obj.index = s + 1;
            if (s >= num) {
              clearTimeout(timmer);
            } else {
              if (s > num - 10) { // 剩余10格动画减速
                animate(obj.index, time + 20);
              } else {
                animate(obj.index, time);
              }
            }
          }, time)
        }
        animate(obj.index, 10)
      })
  }
})

以上就是直播app源码,canvas 环形刻度 进度条, 更多内容欢迎关注之后的文章

 

标签:canvas,obj,进度条,ctx,num,源码,刻度,var
From: https://www.cnblogs.com/yunbaomengnan/p/17559938.html

相关文章

  • 百度飞桨PP-YOLOE ONNX 在LabVIEW中的部署推理(含源码)
    目录前言一、什么是PP-YOLO二、环境搭建1、部署本项目时所用环境2、LabVIEW工具包下载及安装三、模型的获取与转化1、安装paddle2、安装依赖的库3、安装pycocotools4、导出onnx模型(1)导出推理模型(2)安装paddle2onnx(3)转换成onnx格式四、在LabVIEW实现PP-YOLOE的部署推理1、LabVIEW......
  • 手机直播app源码部署搭建:带货潮流,商城功能!
     随着互联网时代的迅猛发展,手机直播app源码平台早已成为了人们获取资讯、娱乐放松等方式的主要载体,手机直播app源码平台的日益火爆,也让商人们有了一个新兴的想法出现:直播app平台如此火爆,平台的用户也如此庞大,可不可以将自己家的产品在直播app平台直播进行宣传?所以很多商人陆续开......
  • 读 Go 源码,可以试试这个工具
    编程发展至今,从面向过程到面向对象,再到现在的面向框架。写代码变成了一件越来越容易的事情。学习基础语法,看看框架文档,几天时间搞出一个小项目并不是一件很难的事情。但时间长了就会发现,一直这样飘在表面是不行的,技术永远得不到提升。想要技术水平有一个质的飞跃,有一个很好的方......
  • spdlog日志库源码:CMake构建项目
    目录spdlog项目构成CMake构建根目录CMakeLists.txtcmake版本要求include专用cmake文件设置默认build类型编译器配置判断当前项目是否为spdlog选项开关spdlog项目构成Github源码:https://github.com/gabime/spdlogspdlog项目采用CMake构建,其一级目录结构如下$tree-L1.├─......
  • A014 《太阳系的秘密》编程 源码
    一、课程介绍在本节课中,将会了解太阳系的基本情况,绘制出一个太阳系。在这个过程中,理解for循环结合列表的使用方法,掌握使用random.randint(a,b)产生随机整数的方法。二、知识重难点解析利用列表实现for循环将for循环后边的range()替换成列表后,for循环会按顺序依次提取列......
  • Html利用Canvas绘制图形
    今天接到粉丝私信,询问是否可以通过Canvas绘制一些图形,然后根据粉丝提供的模板图,通过Canvas进行模拟绘制,通过分析发现,图形虽然相对简单,但是如果不借助相应的软件,纯代码绘制还是稍微费些时间。今天将绘制图形源码分享出来,仅供学习分享之用,如有不足之处,还请指正。 什么是Canvas?......
  • HTML5 Canvas API制作一个简单的猜字单机游戏
    这篇文章主要介绍了借助HTML5CanvasAPI制作一个简单的猜字单机游戏的实例分享,游戏中每局会自动生成一个字母,玩家按键盘来猜测该字母是哪一个,需要的朋友可以参考下HTML代码<!doctypehtml><htmllang="en"><head><metacharset="utf-8"/><scrip......
  • 基于源码安装ZooKeeper
    下载ZK代码[email protected]:wangjingqian1995/zookeeper.gitcdzookeepergitcheckoutbranch-3.8设置环境变量echo"exportZOOKEEPER_HOME=/root/code/java/zookeeper">>/etc/profileecho"exportPATH=$PATH:$ZOOKEEPER_HOME/bin">>......
  • kubelet backoff源码分析
    容器拉起流程为了避免容器频繁拉起,kubelet通过backoff来限制(backoff表示上次容器退出时间与再次创建间隔时间,lastUpdate表示上次容器创建时间,backoff和lastUpdate只会在Next函数中会更新):Pod中重启容器时(周期性执行SyncPod函数),Pod通过自身的Status找到当前容器上一次退出时间,记为t......
  • EaselJS 源码分析系列--第二篇
    在第一篇中我们大致分析了从:创建舞台->添加显示对象->更新显示对象的源码实现这一篇将主要分析几个常用显示对象自各draw方法的实现让我们看向例子examples/Text_simple.html这个例子中使用了三个显示对象类Bitmap、Text、ShapeBitmapdraw以下例子中添加了一......