p5((s) => {
let font;
let points;
let circleNr = 0;
s.preload = function () {
font = s.loadFont(fontUrl);
};
s.setup = function () {
s.createCanvas(width, height);
s.textFont(font);
s.textAlign(s.CENTER, s.CENTER);
points = font.textToPoints(text, 50, 250, 200, {
sampleFactor: 0.1
});
};
s.draw = function () {
s.stroke(0);
s.fill(0);
for (let i = 0; i <= circleNr; i++) {
let p = points[i];
s.rect(p.x, p.y, 5);
}
if (circleNr < points.length && s.frameCount % 1 === 0) {
circleNr++;
}
if (circleNr == points.length) {
circleNr = 0;
}
let x1 = s.random(width);
let y1 = s.random(height);
let x2 = x1 + s.random(-1, 1);
let y2 = y1 + s.random(-1, 1);
let fragmentWidth = 100;
let fragmentHeight = height;
let source = [x1, y1, fragmentWidth, fragmentHeight];
let target = [x2, y2, fragmentWidth, fragmentHeight];
s.copy(s, ...source, ...target);
};
})