首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Pixi.js中制作手绘文本动画?

如何在Pixi.js中制作手绘文本动画?
EN

Stack Overflow用户
提问于 2020-06-12 00:42:24
回答 1查看 688关注 0票数 3

创建模仿绘图或手写文本的动画有几个问题和答案。虽然我找到了一个画布api示例和一个基于svg的解决方案,但是我还没有看到任何使用Pixi.js的API的东西。我是个有帆布和皮西的菜鸟。

这是jsfiddle代码:

代码语言:javascript
复制
var ctx = document.querySelector("canvas").getContext("2d"),
  dashLen = 220,
  dashOffset = dashLen,
  speed = 11,
  txt = "Wingardium Leviosa",
  x = 30,
  i = 0;

ctx.font = "50px cursive, TSCu_Comic, sans-serif";
ctx.lineWidth = 5;
ctx.lineJoin = "round";
ctx.globalAlpha = 2 / 3;
ctx.strokeStyle = ctx.fillStyle = "black";

(function loop() {
  ctx.clearRect(x, 0, 60, 150);
  ctx.setLineDash([dashLen - dashOffset, dashOffset - speed]); // create a long dash mask
  ctx.setLineDash([dashLen - dashOffset, dashOffset]); // create a long dash mask   
  dashOffset -= speed; // reduce dash length
  ctx.strokeText(txt[i], x, 90); // stroke letter

  if (dashOffset > 0) requestAnimationFrame(loop); // animate
  else {
    ctx.fillText(txt[i], x, 90); // fill final letter
    dashOffset = dashLen; // prep next char
    x += ctx.measureText(txt[i++]).width + ctx.lineWidth * Math.random();
    ctx.setTransform(1, 0, 0, 1, 0, 3 * Math.random()); // random y-delta
    ctx.rotate(Math.random() * 0.005); // random rotation
    if (i < txt.length) {
      setTimeout(() => {
        requestAnimationFrame(loop);
      }, 300 * Math.random())
    };
  }
})();
代码语言:javascript
复制
<canvas width=600></canvas>

据我所知,上面我喜欢的画布方法主要是从皮西不存在的setLineDash中创造出绘画效果。我喜欢这种方法,只是不知道如何在琵琶上实施。

EN

回答 1

Stack Overflow用户

发布于 2020-06-14 22:32:55

我不知道Pixi,但是一个可行的解决方案可能是在隐藏的画布上使用示例中的例程,然后使用ctx.getImageData获取结果,最后将抓取的图像用作Pixi纹理。

另一种解决方案,也许更容易,但这可以使用,但只有当你不需要其他的Pixi效果(例如,在游戏中,在游戏结束或在两个级别之间),您可以停止Pixi渲染器,并使用您直接张贴的代码对Pixi画布。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62335761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档