gpt4 book ai didi

javascript - 如何在 Pixi.js 中制作一手拉文字动画?

转载 作者:行者123 更新时间:2023-12-01 17:16:40 28 4
gpt4 key购买 nike

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

这是 jsfiddle 代码:

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())
};
}
})();
<canvas width=600></canvas>

据我了解,我喜欢上面的 Canvas 方法主要是从 setLineDash 创建绘图效果,这在 Pixi 中不存在。我喜欢这种方法,只是不确定如何在 Pixi 中实现它。

最佳答案

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

另一种解决方案,也许更简单,但只能在不需要其他 Pixi 效果时使用(例如,在游戏中、游戏结束时或两个关卡之间),您可以停止 Pixi 渲染器并使用您直接针对 Pixi Canvas 发布的代码。

希望这对您有所帮助。

关于javascript - 如何在 Pixi.js 中制作一手拉文字动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62335761/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com