canvas 点赞机绘图重叠的问题,求教

图片描述

根据贝塞尔曲线计算图片绘制的位置,绘制前必须清除上一帧绘制的图片。

但是图片绘制的区域是一个方形框。如果在清除时方框区域存在其他的图片,就会出现图上的情况。怎么破?

可以只绘制一次图片然后按曲线移动位置吗?

基本实现如下

t = t + speed 
const value = getBezierValue(bezier, t)
that.ctx.clearRect(oldx, oldy, size, size); // 清除上一次绘图(问题出现在这二)
that.ctx.globalAlpha = 1 - t;
that.ctx.drawImage(img, value.xt, value.yt, size, size); // 重新绘制
oldx = value.xt, oldy = value.yt; //记录上一次绘图位置
阅读 2.8k
1 个回答

你需要一个 requestAnimateFrame 函数,一个 render 渲染函数和一个全局计数器变量。
通用逻辑是:

  1. 通过 requestAnimateFrame 以 60fps 的频率调用 render 函数

  2. render 函数中每次对计数器加一

  3. 根据计数器的值计算出各个图形所在轨迹的相应位置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进