p5.js入门教程之平滑过渡(Easing)


Posted in Javascript onMarch 16, 2018

一、跟随鼠标移动的小球

使用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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript CSS 修改学习第四章 透明度设置
Feb 19 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
May 07 Javascript
使用text方法获取Html元素文本信息示例
Sep 01 Javascript
JavaScript中的时间处理小结
Feb 24 Javascript
JS hashMap实例详解
May 26 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
Dec 23 Javascript
获取IE浏览器Cookie信息的方法
Jan 23 Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 Javascript
Vue 自定义动态组件实例详解
Mar 28 Javascript
JS桶排序的简单理解与实现方法示例
Nov 25 Javascript
ssm+vue前后端分离框架整合实现(附源码)
Jul 08 Javascript
微信小程序换肤功能实现代码(思路详解)
Aug 25 Javascript
JavaScript 隐性类型转换步骤浅析
Mar 15 #Javascript
JavaScript的数据类型转换原则(干货)
Mar 15 #Javascript
p5.js入门教程之小球动画示例代码
Mar 15 #Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
Mar 15 #Javascript
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 #Javascript
Angularjs Promise实例详解
Mar 15 #Javascript
p5.js入门教程和基本形状绘制
Mar 15 #Javascript
You might like
php打开文件fopen函数的使用说明
2013/07/05 PHP
浅析php工厂模式
2014/11/25 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
js post提交调用方法
2014/02/12 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
js 显示日期时间的实例(时间过一秒加1)
2017/10/25 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
Python实现发送email的几种常用方法
2014/08/18 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python调用C++程序的方法详解
2017/01/24 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Python理解递归的方法总结
2019/01/28 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
求职推荐信范文
2013/12/01 职场文书
服装创业计划书范文
2014/02/05 职场文书
迎新晚会策划方案
2014/06/13 职场文书
爱的承诺书
2015/01/20 职场文书
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python