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 相关文章推荐
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
文本框只能选择数据到文本框禁止手动输入
Nov 22 Javascript
js重写alert控件(适合学习js的新手朋友)
Aug 24 Javascript
jQuery 实现评论等级好评差评特效
May 06 Javascript
js简单获取表单中单选按钮值的方法
Aug 23 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
JavaScript 最佳实践:帮你提升代码质量
Dec 03 Javascript
JavaScript省市级联下拉菜单实例
Feb 14 Javascript
Windows下Node.js安装及环境配置方法
Sep 18 Javascript
JavaScript如何实现元素全排列实例代码
May 14 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
Jun 16 Javascript
vue-列表下详情的展开与折叠案例
Jul 28 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字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
学习Node.js模块机制
2016/10/17 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
详解Python发送email的三种方式
2018/10/18 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
Python 如何展开嵌套的序列
2020/08/01 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
餐厅考勤管理制度
2014/01/28 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
走群众路线学习笔记
2014/11/06 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
交通事故调解协议书
2015/05/20 职场文书
花木兰观后感
2015/06/10 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
Node与Python 双向通信的实现代码
2021/07/16 Javascript
Python可视化学习之seaborn调色盘
2022/02/24 Python
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL