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 相关文章推荐
DOM相关内容速查手册
Feb 07 Javascript
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
Mar 06 Javascript
使弱类型的语言JavaScript变强势
Jun 22 Javascript
用户注册常用javascript代码
Aug 29 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
Jun 04 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
深入学习Bootstrap表单
Dec 13 Javascript
详解jQuery lazyload 懒加载
Dec 19 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
Sep 13 Javascript
详解ES6 Fetch API HTTP请求实用指南
Nov 14 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 Javascript
Vue切换Tab动态渲染组件的操作
Sep 21 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
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
使用python 获取进程pid号的方法
2014/03/10 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
Pytorch之parameters的使用
2019/12/31 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
Python页面加载的等待方式总结
2021/02/28 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
办公室文秘自我评价
2013/09/21 职场文书
班组长竞聘书
2014/03/31 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
2015年共青团工作总结
2015/05/15 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
郭明义观后感
2015/06/08 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
服务器nginx权限被拒绝解决案例
2022/09/23 Servers