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 相关文章推荐
利用javaScript实现点击输入框弹出窗体选择信息
Dec 11 Javascript
可恶的ie8提示缺少id未定义
Mar 20 Javascript
js动态删除div元素基本思路及实现代码
May 08 Javascript
深入理解jquery中的事件与动画
May 24 Javascript
学习Angularjs分页指令
Jul 01 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 Javascript
详解jQuery选择器
Dec 21 Javascript
JS表单数据验证的正则表达式(常用)
Feb 18 Javascript
Vue项目分环境打包的实现步骤
Apr 02 Javascript
Vue SPA单页应用首屏优化实践
Jun 28 Javascript
ES6 Iterator接口和for...of循环用法分析
Jul 31 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 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网站在线人数统计
2008/04/09 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
2019/08/05 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
python实现ip查询示例
2014/03/26 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
简单了解python数组的基本操作
2019/11/26 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
金融专业个人求职信范文
2013/11/28 职场文书
物理研修随笔感言
2014/02/14 职场文书
安全大检查实施方案
2014/02/22 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
python随机打印成绩排名表
2021/06/23 Python