全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

微信小程序小组件 基于Canvas实现|直播|点赞气泡效果

先发Canvas实现|直播|点赞气泡效果图:

实现细节:

1.JS:

drawImage:function(data){[/align]
  var that = this
  var p10= data[0][0]; /* 三阶贝塞尔曲线起点坐标值*/
  var p11= data[0][1]; /* 三阶贝塞尔曲线第一个控制点坐标值*/
  var p12= data[0][2]; /* 三阶贝塞尔曲线第二个控制点坐标值*/
  var p13= data[0][3]; /* 三阶贝塞尔曲线终点坐标值*/
  var p20= data[1][0];
  var p21= data[1][1];
  var p22= data[1][2];
  var p23= data[1][3];
  var p30= data[2][0];
  var p31= data[2][1];
  var p32= data[2][2];
  var p33= data[2][3];
  var t = factor.t;
  /*计算多项式系数 (下同)*/ 
  var cx1 = 3*(p11.x-p10.x);
  var bx1 = 3*(p12.x-p11.x)-cx1;
  var ax1 = p13.x-p10.x-cx1-bx1;
  var cy1 = 3*(p11.y-p10.y);
  var by1 = 3*(p12.y-p11.y)-cy1;
  var ay1 = p13.y-p10.y-cy1-by1;
  var xt1 = ax1*(t*t*t)+bx1*(t*t)+cx1*t+p10.x;
  var yt1 = ay1*(t*t*t)+by1*(t*t)+cy1*t+p10.y;
  var cx2 = 3*(p21.x-p20.x);
  var bx2 = 3*(p22.x-p21.x)-cx2;
  var ax2 = p23.x-p20.x-cx2-bx2;
  var cy2 = 3*(p21.y-p20.y);
  var by2 = 3*(p22.y-p21.y)-cy2;
  var ay2 = p23.y-p20.y-cy2-by2;
  var xt2 = ax2*(t*t*t)+bx2*(t*t)+cx2*t+p20.x;
  var yt2 = ay2*(t*t*t)+by2*(t*t)+cy2*t+p20.y;
  var cx3 = 3*(p31.x-p30.x);
  var bx3 = 3*(p32.x-p31.x)-cx3;
  var ax3 = p33.x-p30.x-cx3-bx3;
  var cy3 = 3*(p31.y-p30.y);
  var by3 = 3*(p32.y-p31.y)-cy3;
  var ay3 = p33.y-p30.y-cy3-by3;
  /*计算xt yt的值 */
  var xt3 = ax3*(t*t*t)+bx3*(t*t)+cx3*t+p30.x;
  var yt3 = ay3*(t*t*t)+by3*(t*t)+cy3*t+p30.y;
  factor.t +=factor.speed;
  ctx.drawImage("../../images/heart1.png",xt1,yt1,30,30);
  ctx.drawImage("../../images/heart2.png",xt2,yt2,30,30);
  ctx.drawImage("../../images/heart3.png",xt3,yt3,30,30);
  ctx.draw();
  if(factor.t>1){
   factor.t=0;
   cancelAnimationFrame(timer);
   that.startTimer();
  }else{
   timer =requestAnimationFrame(function(){
    that.drawImage([[{x:30,y:400},{x:70,y:300},{x:-50,y:150},{x:30,y:0}],[{x:30,y:400},{x:30,y:300},{x:80,y:150},{x:30,y:0}],[{x:30,y:400},{x:0,y:90},{x:80,y:100},{x:30,y:0}]])
   })
  }}

2.原理:

a.通过绘制三条不同的三阶贝塞尔曲线,选取三张图片让其沿着各自的贝塞尔曲线运动,运动轨迹如下图:

b.计算三阶贝塞尔曲线x(t),y(t)的数学表达式。

三阶贝塞尔曲线是通过四个点来形成一条曲线,两个控制点,一个起点一个终点。

利用多项式系数即可得到x(t),y(t)的数学表达式:

cx = 3 * ( x1 - x0 )
bx = 3 * ( x2 - x1 ) - cx
ax = x3 - x0 - cx - bx
cy = 3 * ( y1 - y0 )  
by = 3 * ( y2 - y1 ) - cy
ay = y3 - y0 - cy - by
x(t) = ax * t ^ 3 + bx * t ^ 2 + cx * t + x0
y(t) = ay * t ^ 3 + by * t ^ 2 + cy * t + y0 

这里画了三条贝塞尔曲线,套用公式三次即可,这里没有采用循环,如果贝塞尔曲线条数比较多时,可采用循环调用 ctx.drawImage,其中factor.t为三阶贝塞尔曲线的参数,取值范围[0,1], 最后调用ctx.draw(),并且设置定时器即可实现图片沿着贝塞尔曲线运动。

3.Tip:

这里采用的定时器是通过requestAnimationFrame()函数实现的, 弃用setInterval的原因是实际测试中有卡帧现象并且动画显示有细微的不连续。

项目地址:

github:https://github.com/jeffer0323/We-Canvas

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


# 微信小程序点赞  # 微信小程序组件  # Canvas直播点赞气泡  # 微信小程序 vidao实现视频播放和弹幕的功能  # 微信小程序之video组件视频播放  # 微信小程序使用视频播放器video组件  # 微信小程序开发中的视频播放和直播功能示例代码  # 塞尔  # 坐标值  # 三条  # 第一个  # 中有  # 第二个  # 让其  # 画了  # 大家多多  # 三张  # 如下图  # 先发  # 条数  # 为三  # 不连续  # factor  # JS  # strong  # brush  # class 


相关文章: 宝塔面板创建网站无法访问?如何快速排查修复?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  建站之星如何助力网站排名飙升?揭秘高效技巧  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何通过NAT技术实现内网高效建站?  无锡营销型网站制作公司,无锡网选车牌流程?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何在万网主机上快速搭建网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何选择靠谱的建站公司加盟品牌?  建站168自助建站系统:快速模板定制与SEO优化指南  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  宝塔新建站点为何无法访问?如何排查?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  浅谈Javascript中的Label语句  XML的“混合内容”是什么 怎么用DTD或XSD定义  如何制作一个表白网站视频,关于勇敢表白的小标题?  C#如何使用XPathNavigator高效查询XML  建站之星导航如何优化提升用户体验?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  建站之星2.7模板快速切换与批量管理功能操作指南  建站之星价格显示格式升级,你的预算足够吗?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  建站之星Pro快速搭建教程:模板选择与功能配置指南  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  如何高效搭建专业期货交易平台网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  定制建站流程解析:需求评估与SEO优化功能开发指南  建站之星安装需要哪些步骤及注意事项?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  建站主机类型有哪些?如何正确选型  济南企业网站制作公司,济南社保单位网上缴费步骤?  威客平台建站流程解析:高效搭建教程与设计优化方案  建站VPS选购需注意哪些关键参数?  英语简历制作免费网站推荐,如何将简历翻译成英文?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  如何通过VPS建站实现广告与增值服务盈利?  如何通过商城免费建站系统源码自定义网站主题?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  南平网站制作公司,2025年南平市事业单位报名时间?  ,交易猫的商品怎么发布到网站上去?  如何正确下载安装西数主机建站助手?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  常州企业网站制作公司,全国继续教育网怎么登录?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。