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各类型的关系图解
Oct 16 Javascript
javascript每日必学之封装
Feb 23 Javascript
jquery dataview数据视图插件使用方法
Dec 23 Javascript
无法获取隐藏元素宽度和高度的解决方案
Mar 07 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 Javascript
微信小程序时间轴实现方法示例
Jan 14 Javascript
node中IO以及定时器优先级详解
May 10 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
May 20 Javascript
小程序中英文混合排序问题解决
Aug 02 Javascript
解决Vue router-link绑定事件不生效的问题
Jul 22 Javascript
Vue $emit()不能触发父组件方法的原因及解决
Jul 28 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
PHP学习笔记之数组篇
2011/06/28 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
js实现右键菜单功能
2016/11/28 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
小程序实现密码输入框
2020/11/16 Javascript
python连接oracle数据库实例
2014/10/17 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python实现ID3决策树算法
2017/12/20 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
python 绘制国旗的示例
2020/09/27 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
上海中网科技笔试题
2012/02/19 面试题
Solaris操作系统的线程机制
2015/07/28 面试题
什么是GWT的Entry Point
2013/08/16 面试题
装潢设计专业推荐信模板
2013/11/26 职场文书
企业宣传策划方案
2014/05/29 职场文书
人力资源职位说明书
2014/07/29 职场文书
个人先进事迹总结
2015/02/26 职场文书
小学教师自我评价
2015/03/04 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android