p5.js入门教程之平滑过渡(Easing)
程序员文章站
2023-12-24 16:56:27
一、跟随鼠标移动的小球
使用mousex,mousey可以创建一个跟随鼠标移动的小球。
function setup() {
createcanvas(...
一、跟随鼠标移动的小球
使用mousex,mousey可以创建一个跟随鼠标移动的小球。
function setup() { createcanvas(400, 400); } function draw() { background(220); ellipse(mousex,mousey,20,20); }
二、让小球更加平滑的移动——使用easing
一般制作精良的ui界面都会用到平滑移动这一效果,也就是利用了名为“easing”的方法。
实现思路是另外设置变量以进行位置的过渡,代码如下:
var x=0; var y=0; var targetx=0; var targety=0; var easing=0.1; function setup() { createcanvas(400, 400); x=mousex; y=mousey; } function draw() { background(220); targetx=mousex; targety=mousey; x+=(targetx-x)*easing; y+=(targety-y)*easing; ellipse(x,y,20,20); }
easing的值越大,跟随的速度会越快。
最终效果:https://alpha.editor.p5js.org/full/sy96bl-8b
三、按钮变色easing
当然,不仅仅是在物体运动,一切涉及数值变化的都可以使用easing来进行过渡。
以下代码是一个按钮,当鼠标移到上方时,会逐渐变色,也是用了easing进行过渡。
var rectx=0; var recty=0; var rectheight=100*0.618; var rectwidth=100; var hoverr=255; var hoverg=128; var hoverb=128 var exitr=255; var exitg=255; var exitb=255; var r=0; var g=0; var b=0; var ease=0.1; function setup() { createcanvas(400, 400); rectx=width/2; recty=height/2; r=exitr; g=exitg; b=exitb; } function draw() { background(220); if(mousex>=rectx-rectwidth/2 && mousex<=rectx+rectwidth/2&& mousey>=recty-rectheight/2 && mousey<=recty+rectheight/2){ r+=(hoverr-r)*ease; g+=(hoverg-g)*ease; b+=(hoverb-b)*ease; }else{ r+=(exitr-r)*ease; g+=(exitg-g)*ease; b+=(exitb-b)*ease; } fill(r,g,b); rectmode(center); rect(rectx,recty,rectwidth,rectheight,8); }
最终效果:http://alpha.editor.p5js.org/full/bjueqvw8w
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。