[关闭]
@wh1100717 2015-02-11T09:34:29.000000Z 字数 2981 阅读 1274

Processing Learning(1)

Processing


介绍

什么是Processing?

Processing是一门专注于具有交互性数据可视化的编程语言,在平面设计,艺术创作,交互原型设计,新媒体,建筑规划,图像处理,开源硬件等领域有着广泛的应用;同时,Processing可以让人们在视觉环境下学习编程,并且语法简单上手快,为很多人打开了学习编程的大门,号称是最适合零基础编程入门的语言。

Processing有什么特点?

Processing.js和p5.js

Processing定义了一套语法规范,默认使用Java语言进行数据可视化代码的编写,主要通过PDE(Processing Development Environment)工具进行代码的开发(Processing也可以使用其他编程语言进行开发,在PDE中可以选择具体的开发语言)。

我们关注核心点放在Processing在前端开发中的应用,因此不适用PDE进行开发。

在前端领域目前存在两个Processing相关的JS框架:Processing.js和p5.js,两个框架的侧重点不同。

因此,接下来的内容主要是通过p5.js来进行Processing的学习。

p5.js安装和环境搭建

想在页面中引用p5.js进行processing代码的编写非常简单,只需要将p5.js引用到页面中

  1. <script src="../p5.min.js"></script>

也可以使用p5.js推荐的cdn

  1. <script src="//cdnjs.cloudflare.com/ajax/libs/p5.js/0.0.0/p5.js"></script>

为了使调试方便,我在Github上创建了这个文档学习项目,clone并初始化该项目,可以更方便的学习和调试源码,具体的环境搭建介绍如下:

  1. git clone https://github.com/wh1100717/p5_learning
  2. cd p5_learning
  3. npm install && bower install

注: 在天朝这个神奇的地方,npm可能会巨慢无比,可以考虑使用cnpm进行代替,cnpm的具体使用方式查看cnpm官网快速搭建 Node.js 开发环境以及加速 npm

项目文件结构如下:

第一个小示例

打开demos/d1文件夹,存在两个文件,index.html和main.coffee

index.html文件中引用了p5.min.js文件及main.js文件,除此之外没有其他内容。

  1. <!doctype html>
  2. <!-- index.html -->
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <title>p5_learning</title>
  7. </head>
  8. <body>
  9. <script src="/bower_components/p5js/lib/p5.min.js"></script>
  10. <script src="main.js"></script>
  11. </body>
  12. </html>

我们来看一下main.coffee中都做了什么事情:

  1. # d1/main.coffee
  2. setup = ->
  3. console.log("Setup Stage!")
  4. draw = ->
  5. console.log("Draw Stage!")

执行grunt然后在浏览器中打开http://localhost:9008/demos/d1/会发现Setup Stage!打印了1次,而Draw Srage一直在输出内容。

结果显示如下:

我们可以看出这两个函数的作用:setup()进行初始化,draw()持续一直执行重绘操作。


我们在main.coffee中增加一些内容

  1. # d1/main.coffee
  2. setup = ->
  3. console.log("Setup Stage!")
  4. draw = ->
  5. console.log("Draw Stage!")
  6. ellipse(50, 50, 80, 80)

结果显示如下:

这时候浏览器会自动刷新,并在左上角显示了一个圆形。我们查看页面Html会发现,页面中增加了如下代码:

  1. <canvas id="defaultCanvas" class=" " width="200" height="200" style="width: 100px; height: 100px;"></canvas>

p5.js自动生成了一个默认canvas画布,并在该画布上花了一个圆。


如果想在指定div下生成一个宽800px高600px的canvas画布,可以使用如下方式:

  1. <body>
  2. <div id="main-page"></div>
  3. ...
  1. setup = ->
  2. console.log("Setup Stage!")
  3. createCanvas(800, 600).parent("main-page")
  4. draw = ->
  5. console.log("Draw Stage!")
  6. ellipse(50, 50, 80, 80)

结果显示如下:

此时,在id为main-page的div下生成了一个宽800px,高600px的canvas画布。


我们可以使用如下代码让小球动起来:

  1. x = 0
  2. setup = ->
  3. console.log("Setup Stage!")
  4. createCanvas(800, 600).parent("main-page")
  5. draw = ->
  6. console.log("Draw Stage!")
  7. fill(0)
  8. ellipse(x, 100, 80, 80)
  9. x = if x >= 800 then 0 else x + 10

结果显示如下:

我们可以看到小球从左向右移动并最终填满整个横向区域。


接下来增加一些与用户的交互内容。

  1. setup = ->
  2. createCanvas(800, 600).parent("main-page")
  3. background(155)
  4. draw = ->
  5. fill if mouseIsPressed then 0 else 255
  6. ellipse(mouseX, mouseY, 80, 80) if mouseX isnt 0 and mouseY isnt 0

结果显示如下:

小球移动的地方会产生一个小球,当鼠标按下时显示为黑色,没有按下时时显示为白色。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注