p5.js入门教程和基本形状绘制


Posted in Javascript onMarch 15, 2018

一、什么是p5.js

最近接触了一门数字媒体艺术类的课程,名为Interactivity,教的是p5.js。

主讲老师就是开发者之一……还是挺激动的。

p5.js是一个为艺术家、设计师而开发的Javascript库,可以看作是Processing的Web版本。如果有Processing学习经验的话,p5.js上手会非常快。

至于p5.js有什么用,这个问题很难回答,因为我本身也是个初学者。

我目前觉得p5.js是一个很好的激发创意的工具,并且你可以将p5.js的内容嵌入网页,让你的网站更炫。

二、使用p5.js

p5.js拥有在线的代码编辑器,网址如下:

http://alpha.editor.p5js.org/

左边输入代码,点击运行按钮,就可以在右边看到代码运行效果。

你可以注册一个p5.js帐号,每次你的代码都可以保存在官方网站,无论是修改、测试或展示都十分方便。

下图是用ellipse()函数画了一个圆:

p5.js入门教程和基本形状绘制

三、上手p5.js

当你新建了一个p5.js工程后,便会生成以下的代码:

function setup() { //setup函数,每次程序开始运行时执行一次,用于初始化。 
 createCanvas(400, 400);//生成一个400x400的画布 
}  
function draw() { //draw函数,每秒运行60次,不断地在画布上绘制图形 
 background(220);//绘制背景,颜色为RGB(220,220,220) 
}

p5.js程序总是从setup()开始执行,执行过一次setup()后,便进入draw()函数的不断循环调用。

可以发现,语法和JavaScript并没有什么太大的不同,只是多了很多特殊的函数以供调用罢了。

四、绘制基本图形

在p5.js中,绘制图形是件很容易的事情,有很多相关函数:

function setup() {  
 createCanvas(400, 400); 
}  
 
function draw() {  
 background(220); 
  ellipse(100,100,100,100);//绘制椭圆(x,y,宽,高) 
  triangle(150,150,150,200,200,200);//绘制三角形(x1,y1,x2,y2,x3,y3) 
  quad(180,100,200,150,270,150,250,100);//绘制四边形(x1,y1,x2,y2,x3,y3,x4,y4) 
  rect(30, 20, 50, 50);//绘制矩形(x,y,宽,高) 
  line(0,0,100,100);//绘制线段(x1,y1,x2,y2)起点至终点 
  arc(200, 50, 50, 50, 0, HALF_PI);//绘制弧(x,y,宽,高,起始角度,终止角度) 
}

效果如下图所示:

p5.js入门教程和基本形状绘制

当然,线条色和填充色都是可以替换的,也可以修改线条粗细:

function setup() {  
 createCanvas(400, 400); 
}  
 
function draw() {  
 background(220); 
   
  stroke(255,128,128); 
  strokeWeight(5); 
  fill(255,200,0); 
  ellipse(100,100,100,100); 
  triangle(150,150,150,200,200,200); 
   
  noStroke(); 
  fill(100,255,0); 
  quad(180,100,200,150,270,150,250,100); 
  rect(30, 20, 50, 50); 
   
  stroke(0); 
  line(0,0,100,100); 
  arc(200, 50, 50, 50, 0, HALF_PI); 
}

效果如下图所示:

p5.js入门教程和基本形状绘制

五、查阅Reference

p5.js提供了许多函数用来进行创作,并且许多函数都有多种重载函数,这里不一一讲解。

p5.js官网提供了Reference,对每一种函数都进行了详细的解释,可以通过查阅这些函数的用法来进一步学习p5.js,网址如下:

https://p5js.org/reference/

p5.js入门教程和基本形状绘制

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery1.6 正式版发布并提供下载
May 05 Javascript
更优雅的事件触发兼容
Oct 24 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
Jun 16 Javascript
node.js中使用q.js实现api的promise化
Sep 17 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
Jan 28 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 Javascript
JavaScript运动框架 多值运动(四)
May 18 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
Jun 13 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
Apr 29 Javascript
js 动态校验开始结束时间的实现代码
May 25 Javascript
js不常见操作运算符总结
Nov 20 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
Mar 15 #Javascript
vue之浏览器存储方法封装实例
Mar 15 #Javascript
vue实现提示保存后退出的方法
Mar 15 #Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
Mar 15 #Javascript
vue-cli创建的项目,配置多页面的实现方法
Mar 15 #Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
Mar 15 #Javascript
iview中Select 选择器多选校验方法
Mar 15 #Javascript
You might like
PHP聊天室技术
2006/10/09 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
javascript奇异的arguments分析
2010/10/20 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
使用Python开发windows GUI程序入门实例
2014/10/23 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Python实现端口检测的方法
2018/07/24 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
python 字段拆分详解
2019/12/17 Python
晨会主持词
2014/03/17 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
稽核岗位职责范本
2015/04/13 职场文书
初中体育课教学反思
2016/02/16 职场文书
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS