1 Processing入门简介

1.1 Before you start

Processing是一个为开发面向图形的应用(visually oriented application)而生的简单易用的编程语言和编程环境。Processing的创造者将它看作是一个代码素描本。它尤其擅长算法动画和即时交互反馈,所以近年来在交互动画,复杂数据可视化,视觉设计,原型开发和制作方向越发流行,大家都喜欢这个可爱贴心,简洁好用的编程工具。

Processing基于Java,其语法规则和Java是一致的,但是即使你熟悉Java编程,也请暂时忘记这一点,因为Processing不同于Java,它更为简单,并且已经演化出了它自己的一套"工作习惯"。

本文将简洁地向你描述Processing的下载、配置、使用方法和编程思路,希望本文能给你打开一扇通向自由创造的大门。

Processing官方网址:https://processing.org

网站包含了Processing的作品展示,对象/函数文档和应用示例,背景介绍,相关链接(论坛、维基、FAQ等等)。

如果你想获得详细的、最新的Processing资讯,请访问该网站;如果你有足够的英文水平和精力,请停止向下继续阅读,访问该网站,因为那上有能满足你的更多更丰富和权威的资讯。

1.2 Equip yourself

开始旅程之前,让我们来安装Processing。

由于Processing基于Java,请保证你的计算机已经配置Java环境,否则Processing不能正常工作。

Processing最新版本下载地址:

http://processing.org/download

Processing是开源软件,开发者下载前会询问你是否向其捐款,对此我的建议是:有钱就捐点吧!

当然,选择"No Donation"可以直接看到下载链接,选择"Download"进入下载页面:

选择适配你电脑的版本,点击下载。这里以windows64位系统为例。

下载后会得到文件:

此时你已经完成了一大半的工作了!

(再次提示,必须先配置好Java环境Processing才能正常运行。

JDK包下载:http://java.sun.com ;

网友提供环境配置教程:http://wenku.baidu.com/view/a2e732caa1c7aa00b52acb9b.html

接下来,解压安装包:

打开processing.exe:

完成!你已经看到了Processing的开发环境PDE。把processing.exe创建桌面快捷方式,今后可以方便的使用了。

1.3 Start!

现在你已经进入了一个全新的Processing世界,你要开始学习Processing的习惯。

1.3.1 Sketch

之前已经提到过,Processing的创造者它看作是一个代码的素描本,在这里,你可以用代码绘画。所以,Processing的工程也非常文艺地取名为"素描本"——Sketch。

选择Sketch→Show Sketch Folder,打开当前工程文件目录。

这个素描本中的素描纸,也就是Processing的源文件是.pde文件,在PDE中以tab的形式显示,tab的名称就是pde文件的名称。每个sketch中都有一个主tab,这个tab和目录文件夹同名,是Processing的程序入口。

1.3.2 PDE

Processing的开发环境被称为PDE(Processing Development Environment),在PDE的界面中,你可以看到三个部分:工具栏,代码编辑区,控制台。

Toolbar工具栏

运行 停止

新建 打开 保存 输出应用

这些功能用来控制Sketch(Processing工程),其中,输出应用的功能将在下一节详述。

模式选择

Processing支持多种运行模式,默认为Java,即运行时生成一个桌面应用,可以下载添加Android(生成安卓程序),JavaScript(生成嵌入web的applet)等模式。

Text editor 代码编辑区

选项卡区

Processing以选项卡tab组织代码编辑区,每个tab实际上对应了一个.pde格式的代码源文件。点击右方的小下拉箭头,可以对tabs进行操作。

当你打开processing.exe时,Processing就为你默认创建了一个工程(Processing中被称为Sketch),并为你创建了一个以"sketch_+当前日期+顺序编号"命名的tab。选择Sketch→Show Sketch Folder,就能够看到当前工程文件目录。这是工程是暂存的状态,选择可以进行更名和保存。

Console 控制台

黑色区域上方是信息区,运行时的PDE状态、出错信息等都会显示在这里;

黑色区域是控制台;

最下方显示的是当前的行数。

现在刚打开的工程是空白的,点击运行键,你的屏幕上将出现运行结果:

默认情况下,Processing程序的运行结果是一个100*100的灰色空白窗口。在代码编辑区输入下列代码:

再次运行,如果不出什么意外的话,你将看到:

如果出了意外,你的代码输入错误,你将在控制台看到你的错误信息,根据这个信息修正你的代码。

1.4 Hello World!

清空你的代码编辑区,在代码编辑区输入下列代码,然后运行:

void setup() {

size(480, 120);

}

void draw() {

if (mousePressed) {

fill(0);

} else {

fill(255);

}

ellipse(mouseX, mouseY, 80, 80);

}

感觉如何?

这段代码的意思是,将窗口大小设定为480*120,如果鼠标按下,则在鼠标的位置画一个半径为80的白色圆,否则在鼠标的位置画一个半径80的黑色圆。

1.4.1 Processing程序逻辑

点击stop按钮终止程序,让我们来看看这段代码。

在这个程序中我们重写了两个函数:setup()和draw()。

setup()是在程序开始时调用的函数,只执行一次;而draw()在setup后被调用,并且将循环地、不停地被调用。

这里的setup()和draw()函数类似于MFC的回调函数,也就是说,在特定的条件下被系统调用的函数,如,setup是在程序启动时被调用的,draw是setup以后按照每秒多少帧被系统调用的(类似的函数还有mousePressed()—在鼠标按下时被调用,keyPressed()—在键盘某个键按下时会被调用,等等)。然而setup()和draw()是所有函数中最关键的两个函数。

下面我们来尝试一下:

1、在setup函数中加入如下代码并运行:background(255);

2、将刚才加到setup中的那一行代码剪切到draw函数中并运行。

结果如何?我们可以看到,在第一步时,运行效果和一开始相仿,鼠标滑动会留下一连串的圆圈轨迹,而第二步中,我们不能得到轨迹,只能看到一个随着鼠标移动的黑球或者白球。

background()是设置背景颜色的函数,里面的参数是颜色,当有一个数字参数时,它指代的是0-255的灰度值,所以"background(255);"这条语句的作用是,将背景颜色设置为白色。而之所以出现刚刚两种完全不同的效果,原因是setup()只在程序开始执行一次,之后不断画上去的圈圈,将背景盖住,而draw()会被不断调用,每一次调用,都会执行一次background函数,将整个画面刷新一遍,再绘制新的小圈圈,所以看起来就是只有一个随着鼠标移动的小球了。

draw()就像动画中的一帧,我们的代码决定了每一帧中要画什么东西。如果我们说,每一帧都画一样的东西,最后画面就是静止的;如果我们告诉Processing,每一帧要画什么不一样的东西,我们的画面就动起来了;如果我们说,按照鼠标的移动画出不同的东西,你的画面就成为了交互式的。

Processing就以这样的方式,让图形图像动起来,和用户进行交互。

1.4.2 空间和色彩的游戏

下面将写在draw函数中的background()语句修改一下:

background(mouseX, mouseY, 100);

再次运行。

如果一切正常,你在移动鼠标的时候可以看到背景颜色随着鼠标小球的位置在逐渐的变化。

这里我们给了background函数三个参数,这时候,这三个参数就分别代表了red,green和blue的值,而mouseX,mouseY是Processing中记录鼠标位置的对象,所以,当时间流逝,draw函数被不断调用,窗口的背景值就随着鼠标的位置不断改变了。

看到了么?Processing就这样将你的鼠标位置"翻译"成了色彩!

这只是Processing的冰山一角。Processing中有大量的内置对象和函数,它们让你轻松的操控空间和色彩,创造出各式各样的作品。

1.4.3 保存和分享!

到现在为止我们还没保存过我们的工作,点击(或ctrl+s),在弹出的窗口里输入你想保存的工程名(Processing默认的工程名是"Sketch+当天时间+字母编号",我一般保存时将最后的字母修改为我想要的名字即可,即"sketch_131022_helloworld")Processing会在你选好的位置为它创建一个sketch。

如果你想让将你的大作和朋友们分享,你可以将程序发布成应用。点击(或ctrl+e),根据提示操作,你就能得到在Windows、iOS或者Linux下运行的应用程序。以Windows为例,导出应用后sketch中会出现为32位系统和64位系统的两个文件夹,其中每个文件夹中都含有 一个同名批处理文件,一个Processing库文件夹lib,和一个ped源文件夹source(程序源代码,没有它仍然导出的程序可以运行),如果有数据还会有一个data文件夹,运行时,执行.bat批处理文件就行了。

1.5 三个锦囊

到现在为止,Processing的基本操作和逻辑我已经介绍完了。最后送大家三个锦囊。

1.5.1 Reference

Processing为它的使用者提供了相当好用的文档。

观察PDE中的程序代码,程序中有颜色的size()、fill()、ellipse()函数和mousePressed、mouseX、mouseY,是Processing内置的函数和值。

在这些词上点击右键 > Find in Reference,就会在弹出的页面中看到这些内置函数、对象的说明文档。

这个文档来自本地(在你解压的Processing包里),你可以从打开的这个文档中的链接找到所有的Processing对象、类、函数,Processing的创作者为我们提供了全面的描述和形象的介绍。同样的内容可以在官网的Reference上找到。

当你不清楚这个函数的用途,或者参数、返回值时,可以以这样的方式查看它。当你想知道Processing中所有的函数、对象和它们的用法时,也可以去查看Reference。

1.5.2 Examples

Processing为它的使用者贴心地准备了大量全面的使用示例。

在PDE中选择file > Examples(或Ctrl+Shift+O)就会弹出Processing的Examples窗口。

这里集成了大量的Processing案例,涵盖了Processing的各个方面各种话题。点开其中的任何一个工程,都会开启新的PDE窗口,这里,Processing用最简单优美的代码来表达问题,你可以点击运行查看代码结果,在代码区观察代码结构。

1.5.3 One More Thing

打开一个新工程(Ctrl+n),输入下列代码并运行:

void setup(){

size(400, 400);

}

void draw(){

background(#FFEE31);

pushMatrix();

translate(200, 200 - 60);

//eyes

PVector mouse = new PVector(mouseX, mouseY);

mouse.sub(200, 200 - 60, 0);

mouse.limit(7);

fill(0);

noStroke();

rectMode(CENTER);

rect(-1*40+mouse.x, -15+mouse.y, 15, 25, 8);

if(mousePressed)

rect(40+mouse.x, -15+mouse.y, 28, 10, 5);

else

rect(40+mouse.x, -15+mouse.y, 15, 25, 8);

//mouth

noFill();

strokeWeight(12);

stroke(0);

arc(0, 0, 150, 120, PI/4, PI-PI/4);

popMatrix();

//text

textSize(25);

textAlign(CENTER);

text("Enjoy your hacking with\nProcessing!", width/2, height/2+100);

}

Reference

1 Processing's Official Site: http://www.processing.org/tutorials/

2 Casey Reas and Ben Fry, http://www.processing.org/tutorials/gettingstarted/, 2010

3 Ben Fry, http://www.processing.org/tutorials/overview/, 2007

1 Processing入门简介的更多相关文章

  1. Processing入门指南

    简介 Processing 是由 MIT 媒体实验室的 Casey Reas 和 Benjamin Fry 发明的一种开源可视化编程语言.Processing为数字媒体与娱乐交互设计而创建,其目的是通 ...

  2. 掌握 Ajax,第 1 部分: Ajax 入门简介

    转:http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html 掌握 Ajax,第 1 部分: Ajax 入门简介 理解 Ajax 及其工作 ...

  3. MongoDB入门简介

    MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...

  4. (转)Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  5. NodeJS入门简介

    NodeJS入门简介 二.模块 在Node.js中,以模块为单位划分所有功能,并且提供了一个完整的模块加载机制,这时的我们可以将应用程序划分为各个不同的部分. const http = require ...

  6. ASP.NET Core学习之一 入门简介

    一.入门简介 在学习之前,要先了解ASP.NET Core是什么?为什么?很多人学习新技术功利心很重,恨不得立马就学会了. 其实,那样做很不好,马马虎虎,联系过程中又花费非常多的时间去解决所遇到的“问 ...

  7. webservice入门简介

    为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 webservice入门简介 1.什么是webservice? webservice是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓的远 ...

  8. Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  9. Android精通教程-第一节Android入门简介

    前言 大家好,给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease to be ...

随机推荐

  1. BZOJ2655 Calc - dp 拉格朗日插值法

    BZOJ2655 Calc 参考 题意: 给定n,m,mod,问在对mod取模的背景下,从[1,m]中选出n个数相乘可以得到的总和为多少. 思路: 首先可以发现dp方程 ,假定dp[m][n]表示从[ ...

  2. CodeForces 821D Okabe and City

    Okabe and City 题解: 将行和列也视为一个点. 然后从普通的点走到行/列的点的话,就代表这行/列已经被点亮了. 然后将费用为0的点建上边. 注意讨论(n,m)非亮的情况下. 代码: #i ...

  3. poj 1456 Supermarket(贪心+优先队列)

    题目链接:http://poj.org/problem?id=1456 题意:有N件商品,分别给出商品的价值和销售的最后期限,只要在最后日期之前销售处,就能得到相应的利润,并且销售该商品需要1天时间. ...

  4. 快速构建第一个Flink工程

    本文简述通过maven和gradle快速构建的Flink工程.建议安装好Flink以后构建自己的Flink项目,安装与示例运行请查看:Flink快速入门--安装与示例运行. 在安装好Flink以后,只 ...

  5. python爬虫-模拟微博登录

    微博模拟登录 这是本次爬取的网址:https://weibo.com/ 一.请求分析 找到登录的位置,填写用户名密码进行登录操作 看看这次请求响应的数据是什么 这是响应得到的数据,保存下来 exect ...

  6. spring aop 的一个思考

    问题: spring  aop 默认使用jdk代理织入. 也就是我们常这样配置:<aop:aspectj-autoproxy /> 通过aop命名空间的<aop:aspectj-au ...

  7. 013 turtle程序语法元素分析

    目录 一.概述 二.库引用与import 2.1 库引用 2.2 使用from和import保留字共同完成库引用 2.3 两种库引用方法比较 2.4 使用import和as保留字共同完成库引用 三.t ...

  8. JDK、Spring和Mybatis中使用到的设计模式

    一.JDK中的设计模式 (1)结构性模式 1.适配器模式 java.util.Arrays#asList() java.io.InputStreamReader(InputStream) java.i ...

  9. Java多线程之原子操作类

    在并发编程中很容易出现并发安全问题,最简单的例子就是多线程更新变量i=1,多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程安全 ...

  10. C#中 CS1752无法嵌入互操作类型"OPCServerClass"。请改用适用的接口。

    使用C#+VS开发OPC程序是,调用Interop.OPCAutomation中的类时,提示无法嵌入互操作类型"OPCServerClass".请改用适用的接口. 首先说一下它的含 ...