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 强制类型转换函数
May 17 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
标题过长使用javascript按字节截取字符串
Apr 24 Javascript
jQuery中end()方法用法实例
Jan 08 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
Mar 30 Javascript
详解基于vue-router的动态权限控制实现方案
Sep 28 Javascript
浅谈Vue路由快照实现思路及其问题
Jun 07 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 07 Javascript
全面解析js中的原型,原型对象,原型链
Jan 25 Javascript
JS前端宏任务微任务及Event Loop使用详解
Jul 23 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
php面向对象的方法重载两种版本比较
2008/09/08 PHP
php笔记之:AOP的应用
2013/04/24 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
wxPython中文教程入门实例
2014/06/09 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
python向图片里添加文字
2019/11/26 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
化学专业毕业生求职信
2014/07/28 职场文书
党性心得体会
2014/09/03 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
导游词之唐山景点
2019/12/18 职场文书
vue自定义右键菜单之全局实现
2022/04/09 Vue.js
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS