p5.js入门教程之平滑过渡(Easing)
一、跟随鼠标移动的小球
使用mouseX,mouseY可以创建一个跟随鼠标移动的小球。
functionsetup(){ createCanvas(400,400); } functiondraw(){ background(220); ellipse(mouseX,mouseY,20,20); }
二、让小球更加平滑的移动——使用Easing
一般制作精良的UI界面都会用到平滑移动这一效果,也就是利用了名为“Easing”的方法。
实现思路是另外设置变量以进行位置的过渡,代码如下:
varx=0; vary=0; vartargetX=0; vartargetY=0; vareasing=0.1; functionsetup(){ createCanvas(400,400); x=mouseX; y=mouseY; } functiondraw(){ 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进行过渡。
varrectX=0; varrectY=0; varrectHeight=100*0.618; varrectWidth=100; varhoverR=255; varhoverG=128; varhoverB=128 varexitR=255; varexitG=255; varexitB=255; varR=0; varG=0; varB=0; varease=0.1; functionsetup(){ createCanvas(400,400); rectX=width/2; rectY=height/2; R=exitR; G=exitG; B=exitB; } functiondraw(){ 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。