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 相关文章推荐
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
Jan 22 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
分享JavaScript与Java中MD5使用两个例子
Dec 23 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
May 15 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
Aug 31 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
webpack2.0配置postcss-loader的方法
Aug 17 Javascript
express默认日志组件morgan的方法
Apr 05 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
浅入深出Vue之组件使用
Jul 11 Javascript
使用vue重构资讯页面的实例代码解析
Nov 26 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 xfocus防注入资料
2008/04/27 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
php简单日历函数
2015/10/28 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
Python实现八皇后问题示例代码
2018/12/09 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
目标管理责任书
2014/04/15 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
社区服务活动报告
2015/02/05 职场文书
留学推荐信中文范文
2015/03/26 职场文书