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 相关文章推荐
JQuery 常用操作代码
Mar 14 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
Jul 14 Javascript
动态加载外部javascript文件的函数代码分享
Jul 28 Javascript
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
JQuery的read函数与js的onload不同方式实现
Mar 18 Javascript
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
javascript操作css属性
Dec 30 Javascript
Javascript中的异步编程规范Promises/A详细介绍
Jun 06 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
Jun 26 Javascript
JS 拦截全局ajax请求实例解析
Nov 29 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
Aug 08 Javascript
jquery实现上传图片功能
Jun 29 jQuery
微信小程序绑定手机号获取验证码功能
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
php 获取可变函数参数的函数
2009/08/26 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
Python计算字符宽度的方法
2016/06/14 Python
Python入门之后再看点什么好?
2018/03/05 Python
python程序 创建多线程过程详解
2019/09/23 Python
通过实例解析Python return运行原理
2020/03/04 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
.NET方向面试题
2014/11/20 面试题
犯错检讨书
2014/02/21 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
企业法人代表任命书
2014/06/06 职场文书
文艺晚会策划方案
2014/06/11 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
硕士学位申请报告
2015/05/15 职场文书
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers