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模拟实现Array的sort方法
Dec 11 Javascript
基于jQuery实现的旋转彩圈实例
Jun 26 Javascript
基于jQuery实现的菜单切换效果
Oct 16 Javascript
jquery实现的点击翻书效果代码
Nov 04 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
Jun 25 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
Oct 13 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
小程序如何支持使用 async/await详解
Sep 12 Javascript
js实现随机点名程序
Sep 17 Javascript
jQuery实现颜色打字机的完整代码
Mar 19 jQuery
如何利用javascript接收json信息并进行处理
Aug 06 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
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
vue实现分页栏效果
2019/06/28 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python 多进程通信模块的简单实现
2014/02/20 Python
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
python实现中文分词FMM算法实例
2015/07/10 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
信息管理专业学生自荐信格式
2013/09/22 职场文书
医科大学生的自我评价
2013/12/04 职场文书
工作疏忽检讨书
2014/01/25 职场文书
购房协议书范本
2014/04/11 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
vue自定义右键菜单之全局实现
2022/04/09 Vue.js
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
详解如何使用Nginx解决跨域问题
2022/05/06 Servers