p5.js入門(mén)教程之平滑過(guò)渡(Easing)
一、跟隨鼠標(biāo)移動(dòng)的小球
使用mouseX,mouseY可以創(chuàng)建一個(gè)跟隨鼠標(biāo)移動(dòng)的小球。
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
ellipse(mouseX,mouseY,20,20);
}
二、讓小球更加平滑的移動(dòng)——使用Easing
一般制作精良的UI界面都會(huì)用到平滑移動(dòng)這一效果,也就是利用了名為“Easing”的方法。
實(shí)現(xiàn)思路是另外設(shè)置變量以進(jìn)行位置的過(guò)渡,代碼如下:
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的值越大,跟隨的速度會(huì)越快。
最終效果:https://alpha.editor.p5js.org/full/Sy96bL-8b
三、按鈕變色Easing
當(dāng)然,不僅僅是在物體運(yùn)動(dòng),一切涉及數(shù)值變化的都可以使用Easing來(lái)進(jìn)行過(guò)渡。
以下代碼是一個(gè)按鈕,當(dāng)鼠標(biāo)移到上方時(shí),會(huì)逐漸變色,也是用了Easing進(jìn)行過(guò)渡。
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
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解從0開(kāi)始搭建微信小程序(前后端)的全過(guò)程
這篇文章主要介紹了詳解從0開(kāi)始搭建微信小程序(前后端)的全過(guò)程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
js中int和string數(shù)據(jù)類型互相轉(zhuǎn)化實(shí)例
在本篇文章里小編給大家分享了關(guān)于js中int和string數(shù)據(jù)類型互相轉(zhuǎn)化實(shí)例和代碼,需要的朋友們學(xué)習(xí)下。2019-01-01
JS回調(diào)函數(shù) callback的理解與使用案例分析
這篇文章主要介紹了JS回調(diào)函數(shù) callback的理解與使用,結(jié)合具體案例形式分析了javascript回調(diào)函數(shù)的功能、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
微信小程序?qū)崿F(xiàn)列表?xiàng)l件篩選
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)列表?xiàng)l件篩選,篩選框的效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
php main 與 iframe 相互通訊類(js+php同域/跨域)
這篇文章主要介紹了php main 與 iframe 相互通訊類(js+php同域/跨域),需要的朋友可以參考下2017-09-09
原生JavaScript實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了原生JavaScript實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
微信支付如何實(shí)現(xiàn)內(nèi)置瀏覽器的H5頁(yè)面支付
這篇文章主要介紹了微信支付如何實(shí)現(xiàn)內(nèi)置瀏覽器的H5頁(yè)面支付的相關(guān)資料,需要的朋友可以參考下2015-09-09

