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下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
使用纯javascript实现放大镜效果
Mar 18 Javascript
jquery插件锦集【推荐】
Dec 16 Javascript
微信小程序 本地数据存储实例详解
Apr 13 Javascript
详解vue项目构建与实战
Jun 27 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
Nov 11 Javascript
浅谈Node.js 子进程与应用场景
Jan 24 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
Feb 26 Javascript
Vue项目自动转换 px 为 rem的实现方法
Oct 29 Javascript
JavaScript逻辑运算符相关总结
Sep 04 Javascript
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
Three.js基础部分学习
2017/01/08 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
python 读取文件并替换字段的实例
2018/07/12 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
python归并排序算法过程实例讲解
2020/11/04 Python
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
亿企通软件测试面试题
2012/04/10 面试题
法学毕业生自荐信
2013/11/13 职场文书
企业新年寄语
2014/04/04 职场文书
基层党支部承诺书
2015/04/30 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python