直播平台搭建源码,canvas 画一条波浪线 进度条
直播平台搭建源码,canvas 画一条波浪线 进度条
<template>
<view>
<canvas :style="{'width': width + 'rpx','height': height + 'rpx','backgroundColor': '#d2d8d2'}"
canvas-id="firstCanvas" id="firstCanvas"></canvas>
</view>
</template>
<script>
export default {
data() {
return {
ctx: null,
width: 600,
height: 400,
step: 2,
stepHeight: -60,
trigger: true
}
},
mounted() {
this.ctx = uni.createCanvasContext('firstCanvas', this)
//this.drawWave()
//this.drawWave()
this.moveWave()
},
computed: {
canvasWidth() {
return uni.upx2px(this.width)
},
canvasHeight() {
return uni.upx2px(this.height)
},
stepWave() {
return uni.upx2px(this.canvasWidth) / this.step
},
stepWaveHeight() {
return uni.upx2px(this.stepHeight)
},
canvasCenter() {
return {
x: this.canvasWidth / 2,
y: this.canvasHeight / 2
}
}
},
methods: {
//计算位移 波浪高度的值
moveWave() {
let offset = -this.stepWave * 2
setInterval(() => {
offset++
if (offset >= 0) {
offset = -this.stepWave * 2
}
if (this.stepHeight > -10) {
this.trigger = true
}
if (this.stepHeight < -50) {
this.trigger = false
}
if (this.trigger) {
this.stepHeight -= 0.2
} else {
this.stepHeight += 0.2
}
this.drawWave(offset)
}, 10)
},
drawWave(offset) {
// 遮罩开始
this.ctx.clearRect(0, 0, this.canvasWidth, this.canvasHeight);
this.ctx.save();
this.ctx.beginPath();
this.ctx.fillStyle = '#d5ffc5'
this.ctx.arc(this.canvasCenter.x, this.canvasCenter.y, 100, 0, Math.PI * 2, false);
this.ctx.closePath();
this.ctx.fill();
// this.ctx.setStrokeStyle("#d5ffc5")
// this.ctx.stroke();
this.ctx.clip();
//this.ctx.restore()
// 遮罩结束
this.ctx.beginPath()
//线条起点
this.ctx.moveTo(0 + offset, this.canvasCenter.y); //宽高
// this.ctx.setStrokeStyle("#002ae6") //颜色
this.ctx.setLineWidth(1)
for (let i = 0; i < this.step * 3; i++) {
if (i % 2 == 0) {
this.ctx.quadraticCurveTo(this.stepWave * (i) + this.stepWave / 2 + offset, this.canvasCenter.y + this
.stepWaveHeight, this.stepWave * (i + 1) + offset, this.canvasCenter.y)
} else {
this.ctx.quadraticCurveTo(this.stepWave * (i) + this.stepWave / 2 + offset, this.canvasCenter.y - this
.stepWaveHeight, this.stepWave * (i + 1) + offset, this.canvasCenter.y)
}
}
this.ctx.lineTo(this.stepWave * (this.step * 2 + 3) + offset, this.canvasHeight)
this.ctx.lineTo(0 + offset, this.canvasHeight)
this.ctx.closePath()
let grad = this.ctx.createLinearGradient(0, 0, 0, this.canvasHeight);
grad.addColorStop(0, '#1e92ea')
grad.addColorStop(1, '#2C405A')
// this.ctx.setFillStyle('#3cee06')
this.ctx.setFillStyle(grad)
this.ctx.fill()
this.ctx.restore();
//this.ctx.strokeStyle = "red"
//this.ctx.stroke()
this.ctx.draw()
},
}
}
</script>
<style scoped>
.canvas-view {}
</style>
以上就是 直播平台搭建源码,canvas 画一条波浪线 进度条,更多内容欢迎关注之后的文章
直播平台搭建源码,canvas 画一条波浪线 进度条的更多相关文章
- WEB前端开发学习:源码canvas 雪
WEB前端开发学习:源码canvas 雪 双旦节要到了,程序员们为了响应气氛,特别用代码制作了动态雪花,WEB前端开发学习的初学者们一起跟着案例做一遍吧! <!DOCTYPE html> ...
- Linux平台下源码安装mysql多实例数据库
Linux平台下源码安装mysql多实例数据库[root@linux-node1 ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6 ...
- Hadoop学习笔记(10) ——搭建源码学习环境
Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...
- Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新
SystemUI系列文章 Android8.1 MTK平台 SystemUI源码分析之 Notification流程 Android8.1 MTK平台 SystemUI源码分析之 电池时钟刷新 And ...
- 【Java】用IDEA搭建源码阅读环境
用IDEA搭建源码阅读环境 参考自CodeSheep的Mac源码环境搭建, https://www.bilibili.com/video/BV1V7411U78L 但是实际上在Windows搭建的差别 ...
- 部署zabbix监控平台(源码安装)
案例:部署Zabbix监控平台 1 问题 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 安装LNMP环境 源码安装Zabbix 安装监控端主机,修改基本 ...
- Android 音视频深入 十六 FFmpeg 推流手机摄像头,实现直播 (附源码下载)
源码地址https://github.com/979451341/RtmpCamera/tree/master 配置RMTP服务器,虽然之前说了,这里就直接粘贴过来吧 1.配置RTMP服务器 这个我不 ...
- LNMP搭建 源码包
LNMP源码包搭建 linux CentOS-6.5-x86_64-bin-DVD1 nginx 版本1.8.0 下载地址:http://nginx.org/en/download.htm ...
- Windows平台下源码分析工具
最近这段时间在阅读 RTKLIB的源代码,目前是将 pntpos.c文件的部分看完了,准备写一份文档记录下这些代码的用处.处理过程.理论公式来源.注意事项,自己还没有弄明白的地方.目前的想法是把每一个 ...
- Netty环境搭建 (源码死磕2)
[正文]netty源码 死磕2: 环境搭建 本小节目录 1. Netty为什么火得屌炸天? 1.1. Netty是什么? 1.2. Netty火到什么程度呢? 1.3. Netty为什么这么火? 2 ...
随机推荐
- servlet传入多个数据
通过&来传入值:<a href="bookquery?page=1&nameBook=&author=&publisher=>1</a> ...
- vue3 setup语法糖下,vue自定义指令的实现,以及指令全局挂载,自定义v-loading的实现
最近一段时间,在做h5的移动端项目,UI组件库使用的vant,vant组件中的loading实在难用,无法包裹某个块进行loading,也无法对非组件的标签进行loading,所以想着自定义写个指令, ...
- 软件设计师考试备考之UML
UML 统一建模语言是面向对象软件的标准化建模语言. 事务 结构事务 UML模型中的名称,它们通常是模型的静态部分,描述概念或物理元素 图形表示: 行为事务 UML模型中的动态部分.它们是模型中的动词 ...
- Spring Boot自动配置原理懂后轻松写一个自己的starter
目前很多Spring项目的开发都会直接用到Spring Boot.因为Spring原生开发需要加太多的配置,而使用Spring Boot开发很容易上手,只需遵循Spring Boot开发的约定就行了, ...
- 挖矿僵尸网络蠕虫病毒kdevtmpfsi处理过程
背景: pgsql连接时候报错org.postgresql.util.PSQLException: FATAL: sorry, too many clients already, 意思是client已 ...
- STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr
STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr 和 std::auto_ptr一样,std::unique_ptr也是一种智能指针,它也是通过指针的方式 ...
- Python arcpy创建栅格、批量拼接栅格
本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作. 首先,相关操作所需具体代码如下: import os import arcp ...
- 利用反射和代理简单模拟mybatis实现简单的CRUD
利用反射接口做java数据库操作 今天突发奇想,好像一些基本的CRUD操作路数都是一样的,又想到mybatis中的操作,便想着简单的模拟一下.随便写写,就当练习反射了. Dao接口类: 这里使用泛型, ...
- Word15 财务部年度报告office真题
1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在 ...
- Bug Bash测试
愿望 养成参加 Bug Bash 的习惯,就像养成到点就吃饭一样的习惯. 一.Bug Bash 名词解释 A Bug Bash is a collaborative effort across o ...