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的一个扩展form序列化到json对象
Dec 09 Javascript
IE6下focus与blur错乱的解决方案
Jul 31 Javascript
js算法中的排序、数组去重详细概述
Oct 14 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
Bootstrap布局组件应用实例讲解
Feb 17 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
jQuery实现手机版页面翻页效果的简单实例
Oct 05 Javascript
Bootstrap3多级下拉菜单
Feb 24 Javascript
Vue.js 表单控件操作小结
Mar 29 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
Aug 13 Javascript
vue2配置scss的方法步骤
Jun 06 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 register_globals 值为on与off的理解
2013/09/26 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
JQuery插入DOM节点的方法
2015/06/11 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
Python中的ctime()方法使用教程
2015/05/22 Python
详解python中的线程
2018/02/10 Python
使用python实现BLAST
2018/02/12 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
如何基于Python创建目录文件夹
2019/12/31 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
鱼油专家:Omegavia
2016/10/10 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
介绍一下Make? 为什么使用make
2016/07/31 面试题
酒店节能降耗方案
2014/05/08 职场文书
争先创优心得体会
2014/09/12 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS
简单谈谈Python面向对象的相关知识
2021/06/28 Python
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技