当前位置: 首页 > wzjs >正文

杭州企业网站设计制作wordpress 公用模块

杭州企业网站设计制作,wordpress 公用模块,外贸网站建站注意事项及价格,温州最牛叉的seo这是第二次写canvas,基于微信小程序文档demo进行改写 demo效果为方块横向来回循环移动 我想做的是直播间那种点赞效果,竖向曲线移动、方块换成图片、点击添加绘制元素 第一阶段实现竖向曲线移动、点击添加绘制元素;下一阶段讲方块替换为图…

这是第二次写canvas,基于微信小程序文档demo进行改写

demo效果为方块横向来回循环移动

我想做的是直播间那种点赞效果,竖向曲线移动、方块换成图片、点击添加绘制元素

第一阶段实现竖向曲线移动、点击添加绘制元素;下一阶段讲方块替换为图片

import { formatDate, getRandomInt } from "../../utils/util";// components/stars/stars.ts
Component({lifetimes: {attached() {this.createSelectorQuery().select("#myCanvas2").fields({node: true,size: true}).exec(res => this.init(res));},},/*** 组件的属性列表*/properties: {},/*** 组件的初始数据*/data: {click: [{ startTime: Date.now(), img: '', fd: getRandomInt(-3, 3), c: getRandomInt(100, 200) }]},/*** 组件的方法列表*/methods: {handleAdd() {this.data.click.push({ startTime: Date.now(), img: '', fd: getRandomInt(-3, 3), c: getRandomInt(0, 200) })},init(res) {const width = res[0].widthconst height = res[0].height// 设置画布宽高const canvas = res[0].nodeconst ctx = canvas.getContext('2d')canvas.width = widthcanvas.height = height// 帧渲染回调const draw = () => {const w = 40const time = Date.now()this.data.click = this.data.click.map((item, index) => {// 计算经过的时间const elapsed = time - item.startTime// 计算动画位置const n = Math.floor(elapsed / 3000)const m = elapsed % 3000const dy = m / 1500const bl = 1 - dy / 3const y = height - (height) * dy / 2// -2 随机生成 dy如何确定呢const x = item.fd * Math.sin(dy * Math.PI / 4) * (width - w * bl) / 2 + (width - w * bl) / 2return { ...item, x, y, bl, w, n }})this.data.click = this.data.click.filter(item => {if (item.y < 5) {return false}return true})this.render(ctx, width, height, this.data.click)// 注册下一帧渲染canvas.requestAnimationFrame(draw)}draw()},render(ctx, width, height, click) {ctx.clearRect(0, 0, width, height)// 渲染for (let i = 0; i < click.length; i++) {if (!this.data.click[i]) continue;const { x, y, bl, w, c } = this.data.click[i]ctx.fillStyle = 'rgba(' + c + ', 0, 0,' + bl + ')';ctx.fillRect(x, y, w * bl, w * bl);}}}
})

 替换图片

import { formatDate, getRandomInt } from "../../utils/util";
import { defaultIcon } from '../../pages/clockIn/defaultImg'
let imgsList: any = []// components/stars/stars.ts
Component({lifetimes: {attached() {this.createSelectorQuery().select("#myCanvas2").fields({node: true,size: true}).exec(res => this.init(res));},},/*** 组件的属性列表*/properties: {},/*** 组件的初始数据*/data: {click: [{ startTime: Date.now(), img: '', fd: getRandomInt(-3, 3), c: getRandomInt(100, 200) }]},/*** 组件的方法列表*/methods: {handleAdd() {this.data.click.push({ startTime: Date.now(), img: imgsList[getRandomInt(0, imgsList.length - 1)], fd: getRandomInt(-3, 3), c: getRandomInt(0, 200) })},init(res) {const width = res[0].widthconst height = res[0].height// 设置画布宽高const canvas = res[0].nodeconst ctx = canvas.getContext('2d')canvas.width = widthcanvas.height = height// 加载图片资源let imgKeys = Object.keys(defaultIcon)for (let k of imgKeys) {const image = canvas.createImage()image.onload = () => {imgsList.push(image)// ctx.drawImage(image, 0, 0, 40,40)console.log(imgsList.length)}image.src = defaultIcon[k]}// 帧渲染回调const draw = () => {const w = 40const time = Date.now()this.data.click = this.data.click.map((item, index) => {// 计算经过的时间const elapsed = time - item.startTime// 计算动画位置const n = Math.floor(elapsed / 3000)const m = elapsed % 3000const dy = m / 1500const bl = (1 - dy / 3) * 2const y = height - (height) * dy / 2// -2 随机生成 dy如何确定呢const x = item.fd * Math.sin(dy * Math.PI / 4) * (width - w / bl) / 2 + (width - w / bl) / 2return { ...item, x, y, bl, w, n }})this.data.click = this.data.click.filter(item => {if (item.y < 5) {return false}return true})this.render(ctx, width, height, this.data.click)// 注册下一帧渲染canvas.requestAnimationFrame(draw)}draw()},render(ctx, width, height, click) {ctx.clearRect(0, 0, width, height)// 渲染for (let i = 0; i < click.length; i++) {if (!this.data.click[i]) continue;const { x, y, bl, w, c, img } = this.data.click[i]if (img) {ctx.drawImage(img, x, y, w / bl, w / bl)ctx.globalAlpha = bl}}},}
})
<!--components/stars/stars.wxml-->
<view class="conponent-stars flex-cloumn-center"><canvas type="2d" id="myCanvas2" style="width: 150px;height: 200px;"></canvas><view class="add" bind:tap="handleAdd"></view>
</view>

接下来的问题是canvas绘制的图片有锯齿,找了下解决办法:清晰多了

const dpr = wx.getSystemInfoSync().pixelRatio;canvas.width = width * dpr;canvas.height = height * dpr;ctx.scale(dpr, dpr);

由于找不到透明背景的切图,为了美观想给图片画个圆

目前只能加个边框,裁剪还不能多个同时裁剪

// 渲染for (let i = 0; i < click.length; i++) {if (!this.data.click[i]) continue;const { x, y, bl, w, c, img } = this.data.click[i]// ctx.fillStyle = 'rgba(' + c + ', 0, 0,' + bl + ')';// ctx.fillRect(x, y, w / (3 * bl), w / (3 * bl));if (img) {ctx.drawImage(img, x, y, w / bl, w / bl)ctx.globalAlpha = blctx.beginPath()ctx.arc(x + 0.5 * w / bl, y + 0.5 * w / bl, 20 / bl, 0, 2 * Math.PI)ctx.stroke()ctx.closePath()// ctx.clip()}}

点击效果可以查看小程序打卡模块


文章转载自:

http://JbDI5tqH.wmmtL.cn
http://onHaxgPo.wmmtL.cn
http://cafa7DUu.wmmtL.cn
http://gHcFW4Bm.wmmtL.cn
http://NzOUcf4k.wmmtL.cn
http://2MbuSSSh.wmmtL.cn
http://vZ7q42rB.wmmtL.cn
http://R87KPe24.wmmtL.cn
http://9MChHbl9.wmmtL.cn
http://MHQlhMBQ.wmmtL.cn
http://089OLI9z.wmmtL.cn
http://luWIGZQx.wmmtL.cn
http://pqkhT09E.wmmtL.cn
http://o5lMvlua.wmmtL.cn
http://5RIR014u.wmmtL.cn
http://d4ZWwzmD.wmmtL.cn
http://3OoPDBPx.wmmtL.cn
http://6D6OfKMF.wmmtL.cn
http://Xyv7CA5c.wmmtL.cn
http://6yKtmqqt.wmmtL.cn
http://3OFwSQ86.wmmtL.cn
http://metMmNkq.wmmtL.cn
http://1HCJDqip.wmmtL.cn
http://1DWL0jlq.wmmtL.cn
http://sdBqNic5.wmmtL.cn
http://GJmXllPR.wmmtL.cn
http://sbZowPhS.wmmtL.cn
http://1VKL3IiH.wmmtL.cn
http://sCoJD3h0.wmmtL.cn
http://RSxqGJbk.wmmtL.cn
http://www.dtcms.com/wzjs/694682.html

相关文章:

  • 长春网站制作企业做科技汽车的视频网站
  • 哈尔滨设计网站建设建设银行企业网站失败
  • 学网站开发要下载哪些软件网站软件下载安装
  • 公司做网站发生的费用分录康体设备网站建设
  • 江苏备案网站名称搜索引擎环境优化
  • 网站建设与设计 毕业设计手机app软件开发报价
  • 司法局网站开发方案wordpress is home
  • 区网站制作做网站的费用属于哪个科目
  • 可以做兼职笔译的网站温州市微网站制作电话
  • 一般网站建设公司建筑方案设计步骤
  • 网站建设与网络推广的关系临沂做网站建设的公司
  • 做网站 华普花园成都营销型网站建设中账号
  • 网站建设合同管辖做拼多多网站赚钱吗
  • 怎么做网站的图片手机访问能否提高网站权重
  • 单网页网站网页设计流程分为哪几个步骤
  • 网站建设中请期待网站规划小结
  • 哪个网站可以做puzzle栾川网站建设
  • 常德网站建设套餐报价长沙官网优化多少钱
  • 桂林网站设计公司怎样做网站的二维码
  • 东莞网站建设17海口专业网站建设公司
  • 网站运营建设岗位职责防止wordpress目录显示
  • 汽车配件外贸网站合肥网页设计班
  • 软件项目报价广东百度seo关键词排名
  • 汽车网站企业网站改版的意义
  • 阿里巴巴注册网站首页罗湖网站设计多少钱
  • 多种东莞微信网站建设网上商城购物系统
  • mysql网站数据库专门做包装的网站
  • 厦门网站推广¥做下拉去118cr05网暑假作业答案初一
  • 500人在线网站建设配置彩票娱乐网站建设开发
  • 网站友情链接模块介绍网站建设基础筹备