xxxxxxxxxx
73
// GIF: Setup
let gif;
let canvas;
let framesToSkip = 1;
let makeGif = false;
let isGifExported = false;
function setupGif() {
recordedFrames = 0;
gif = new GIF({
workers: 2,
quality: 10,
workerScript: 'gif.worker.js'
});
const aNumber = parseInt(Math.random()*1000000);
gif.on('finished', function(blob) {
print('GIT: finished')
rendering = false;
window.open(URL.createObjectURL(blob));
saveAs(blob, `bezier-${aNumber}@2x.gif`);
setupGif();
recordedFrames = 0;
});
}
function setup() {
canvas = createCanvas(400, 160);
setAttributes('antialias', true);
setupGif();
x = width*0.5
y = height*0.5
strokeWeight(7)
}
let x, y, r;
let starting = true
function draw() {
background(255);
t = Math.cos(0.2*(frameCount-1) + PI)
if (t > 0 && starting) {
console.log(`Here!`)
starting = false;
}
r = t*17+120
circle(x,y,r)
// GIF: Add frame
if (makeGif &&
!isGifExported &&
((frameCount - 1) % framesToSkip == 0 || frameCount == 1)
) {
console.log(`Added frame. (t = ${t})`)
gif.addFrame(canvas.elt, { delay: 30, copy: true });
}
// GIF: Render when done
if (makeGif &&
!isGifExported &&
t <= -0.98 && !starting
) {
print('Exporting GIF...');
gif.render();
isGifExported = true;
}
}