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 相关文章推荐
二级域名或跨域共享Cookies的实现方法
Aug 07 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
jQuery跨域问题解决方案
Aug 03 Javascript
JavaScript实现点击单元格改变背景色的方法
Feb 12 Javascript
JS简单实现仿百度控制台输出信息效果
Sep 04 Javascript
vue实现可增删查改的成绩单
Oct 27 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
Jul 12 Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
记一次vue跨域的解决
Oct 21 Javascript
Ajax常用封装库——Axios的使用
May 08 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
js 匿名调用实现代码
2009/06/19 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
JS常用算法实现代码
2016/11/14 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
python开发之list操作实例分析
2016/02/22 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
python数据化运营的重要意义
2019/11/25 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
财务会计大学生自我评价
2014/04/09 职场文书
软件项目实施计划书
2014/05/02 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
离婚财产处理协议书
2014/09/30 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript
Spring Bean是如何初始化的详解
2022/03/22 Java/Android