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经典效果集锦
Jul 06 Javascript
javscript对象原型的一些看法
Sep 19 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
理解javascript中的严格模式
Feb 01 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
js变量提升深入理解
Sep 16 Javascript
原生JS实现圆环拖拽效果
Apr 07 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
May 26 Javascript
ajaxfileupload.js实现上传文件功能
Apr 19 Javascript
JS中call()和apply()的功能及用法实例分析
Jun 28 Javascript
angularjs请求数据的方法示例
Aug 06 Javascript
React Native 混合开发多入口加载方式详解
Sep 23 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 strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
destoon数据库表说明汇总
2014/07/15 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
Node.js编码规范
2014/07/14 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
python的文件操作方法汇总
2017/11/10 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Python如何在bool函数中取值
2020/09/21 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
中专三年学习的个人自我评价
2013/12/12 职场文书
单位创先争优活动方案
2014/01/26 职场文书
安全教育月活动总结
2014/05/05 职场文书
公司离职证明标准格式
2014/11/18 职场文书
教师个人年终总结
2015/02/11 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
django如何自定义manage.py管理命令
2021/04/27 Python