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 相关文章推荐
一组JS创建和操作表格的函数集合
May 07 Javascript
分析Node.js connect ECONNREFUSED错误
Apr 09 Javascript
js获取指定的cookie的具体实现
Feb 20 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
Jun 25 Javascript
快速学习JavaScript的6个思维技巧
Oct 13 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
JavaScript实现换肤功能
Sep 15 Javascript
Vue动态组件和异步组件原理详解
May 06 Javascript
利用js-cookie实现前端设置缓存数据定时失效
Jun 18 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
Jul 23 Javascript
webpack打包优化的几个方法总结
Feb 10 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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
深入PHP中的HashTable结构详解
2013/06/13 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
ajax异步请求详解
2017/01/06 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
python中List的sort方法指南
2014/09/01 Python
python实现泊松图像融合
2018/07/26 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python生成带有表格的图片实例
2019/02/03 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
中专生学习生活的自我评价分享
2013/10/27 职场文书
学生就业推荐信
2013/11/13 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
遗嘱格式范本
2015/08/07 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python