idelem

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():按键事件

引用外部库Libraries \ Processing.org

导入数据:sketch 目录下有 data 文件夹,如果没有的话,import file 或把文件拖入窗口,会自动创建。这是为了统一解决各个平台上的文件引用问题,processing 在打包时会自动根据情况调用合适的文件 API。

String[] lines = loadStrings("something.txt");
PImage image = loadImage("picture.jpg");