Processing 笔记本 (1)
Getting Started
Getting Started \ Processing.org
import java.util.*;
import java.text.*;
void setup() {
size(480, 120);
}
void draw() {
if (mousePressed) {
fill(0);
} else {
fill(255);
}
ellipse(mouseX, mouseY, 80, 80);
}
void keyPressed() {
if (key == 's') {
DateFormat formatter = new SimpleDateFormat("yyMMddHHmmss");
Date d = new Date();
String clock = formatter.format(d);
save("ellipse_" + clock + ".png");
}
}
工程没保存的时候,存在一个临时目录里,Ctrl/Cmd+K
打开临时目录。保存工程就是把这个目录移到自己喜欢的位置。
processing 的工程叫 sketch,下文都会用这个词代指。sketch 由多个代码片段组成。一个 sketch 会有一个专属目录,save()
函数保存的图片就放在那里面。上面这个 sketch 的保存功能还可以这么实现:
saveFrame("ellipse_####.png");
####
是填充数字的模板,试验下来发现填充的是帧数。
Overview
Processing Overview \ Processing.org
和大部分类似工具一样,processing 提供了一堆现成的 API 函数给你填充,还有一些必要的系统变量:
setup()
:初始化方法size(w, h)
:设置窗口分辨率,必须写在setup()
的第一行。可以用不同的 renderer 来调用size
,例如size(400, 400, P2D)
是 2D 图像(默认的),size(400, 400, P3D)
是 3D,size(400, 400, PDF, "output.pdf")
是写入 PDF 文件。width, height
:当前窗口宽高
draw()
:每帧刷新mousePressed()
:鼠标按下时事件mousePressed
:判断鼠标是否按下的布尔值mouseX, mouseY
:当前鼠标的坐标
keyPressed()
:按键事件key
:被按下的 ASCII 字符按键keyCode
:被按下的非 ASCII 按键,详见 KeyEvent (Java Platform SE 8 )。
引用外部库:Libraries \ Processing.org
导入数据:sketch 目录下有 data 文件夹,如果没有的话,import file 或把文件拖入窗口,会自动创建。这是为了统一解决各个平台上的文件引用问题,processing 在打包时会自动根据情况调用合适的文件 API。
String[] lines = loadStrings("something.txt");
PImage image = loadImage("picture.jpg");