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表格内容过滤的实现方法
Jul 05 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
Jul 07 Javascript
js 限制input只能输入数字、字母和汉字等等
Dec 18 Javascript
Jquery easyUI 更新行示例
Mar 06 Javascript
js简单实现交换Li的值
May 22 Javascript
20分钟轻松创建自己的Bootstrap站点
May 12 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
微信小程序 弹幕功能简单实例
Feb 14 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
JS实现显示当前日期的实例代码
Jul 03 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 Javascript
使用layui实现树形结构的方法
Sep 20 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 什么是PEAR?
2009/03/19 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
写自荐信要注意什么
2013/12/26 职场文书
绿色学校实施方案
2014/03/31 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
出生证明格式
2015/06/15 职场文书
Redis+AOP+自定义注解实现限流
2022/06/28 Redis