p5.js码绘“跳动的小正方形”的实现代码


Posted in Javascript onOctober 22, 2019

作业成果展示

p5.js码绘“跳动的小正方形”的实现代码

实验原理

主要是要实现小正方形的上下来回运动,并且每个小正方形的跳动有一定的时间差视觉上要呈现依次跳动的感觉。

本来我想用一个if语句来实现这个功能!但是想了很久没想到正确的代码……后来经同学提醒用了sin函数!真的很好用!

var y1=posY+30sin(t);
var y2=posY+28sin(t-1);
var y3=posY+26sin(t-2);
var y4=posY+24sin(t-3);
var y5=posY+22sin(t-4);
var y6=posY+20sin(t-5);

这种sin函数不但能实现依照时间上下做简谐运动,而且只需要改变sin前面的振幅和里面的参数就能够做到小正方形的依次跳动。

小正方形的圆角变化也是用了sin函数,不过因为rect后面控制角的参数是不接受负数的所以用了var b=abs(a)取绝对值。

代码

let posY;
function setup() {
createCanvas(630, 500);//创建画布
noStroke();//不给物体描边
frameRate(60);//帧率设为60
}
function draw() {
background(220);//画布的背景颜色
//为小正方形圆角变化做准备
var t=millis()/400; 
posY=height*0.46;
var a=20*sin(t*0.7);
var b=abs(a);//取绝对值
//为小正方形上下运动做准备
var y1=posY+30*sin(t);
var y2=posY+28*sin(t-1);
var y3=posY+26*sin(t-2);
var y4=posY+24*sin(t-3);
var y5=posY+22*sin(t-4);
var y6=posY+20*sin(t-5);
var y11=posY+30*cos(t);
var y22=posY+28*cos(t-1);
var y33=posY+26*cos(t-2);
var y44=posY+24*cos(t-3);
var y55=posY+22*cos(t-4);
var y66=posY+20*cos(t-5);
//画小正方形
fill(211);
rect(10, y1, 15, 15,b);
fill(192)
rect(30, y2, 20,20,b);
fill(169)
rect(60, y3, 30,30,b);
fill(128)
rect(100, y4, 40,40,b);
fill(105)
rect(150, y5, 50,50,b);
fill(0)
rect(210, y6, 60,60,b);
fill(r, g, b, 127)//每次点击一下最中间的小正方形都会改变它的颜色
rect(280,posY ,70,70,b);
fill(0)
rect(360, y66, 60,60,b);
fill(105)
rect(430, y55, 50,50,b);
fill(128)
rect(490, y44, 40,40,b);
fill(169)
rect(540, y33, 30,30,b);
fill(192)
rect(580, y22, 20,20,b);
fill(211);
rect(605, y11, 15, 15,b);
}

//关于鼠标点击做出响应的函数
function mouseClicked() {
let d = dist(mouseX, mouseY, 360, 200);
 if (d < 100) {
 // Pick new random color values
 r = random(255);
 g = random(255);
 b = random(255);
 }}

总结

以上所述是小编给大家介绍的p5.js码绘“跳动的小正方形”的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JavaScript调用Activex控件的事件的实现方法
Apr 11 Javascript
URL地址中的#符号使用说明
Feb 12 Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 Javascript
js实现点击文本框显示日期选择器特效代码分享
May 21 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
Jun 13 Javascript
echarts学习笔记之图表自适应问题详解
Nov 22 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
Sep 21 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
Aug 12 Javascript
js模拟F11页面全屏显示
Sep 17 Javascript
Vue 实现html中根据类型显示内容
Oct 28 Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 Javascript
微信小程序绑定手机号获取验证码功能
Oct 22 #Javascript
微信小程序开发之转发分享功能
Oct 22 #Javascript
微信小程序转发事件实现解析
Oct 22 #Javascript
小程序点击图片实现png转jpg
Oct 22 #Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
Oct 22 #Javascript
微信小程序实现左侧滑动导航栏
Apr 08 #Javascript
微信小程序自定义组件components(代码详解)
Oct 21 #Javascript
You might like
使用 MySQL Date/Time 类型
2008/03/26 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
JS 树形递归实例代码
2010/05/18 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
fetch 如何实现请求数据
2018/12/20 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
图解javascript作用域链
2019/05/27 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python 中的int()函数怎么用
2017/10/17 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
Python装饰器结合递归原理解析
2020/07/02 Python
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
工程部经理岗位职责
2013/12/08 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
英镑符号 £
2022/02/17 杂记
Java中的随机数Random
2022/03/17 Java/Android