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 关闭浏览器 (不弹出提示框)
Jan 31 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
Dec 08 Javascript
table行随鼠标移动变色示例
May 07 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
Apr 13 Javascript
原生JS实现平滑回到顶部组件
Mar 16 Javascript
不能不知道的10个angularjs英文学习网站
Mar 23 Javascript
JSON字符串和对象相互转换实例分析
Jun 16 Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
Jquery的Ajax技术使用方法
Jan 21 jQuery
vue 集成 vis-network 实现网络拓扑图的方法
Aug 07 Javascript
微信小程序工具函数封装
Oct 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微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
Laravel find in set排序实例
2019/10/09 PHP
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
JS命令模式例子之菜单程序
2016/10/10 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python 实现线程之间的通信示例
2020/02/14 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
中层竞聘演讲稿
2014/01/09 职场文书
志愿者活动总结
2014/04/28 职场文书
安全技术说明书
2014/05/09 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
JS Object构造函数之Object.freeze
2021/04/28 Javascript
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript