Processing Ver.3でのsize()関数に関する仕様変更とsize()関数が効かないときの対応策

プログラミング

Processingのバージョン3ではsize()関数の仕様が変更になっています。

例えば

size(640, 480);

のように引数に数字を入れた場合は問題ありませんが、

size(w, h);

のように変数を入れるとエラーになります。

この場合は、以下のようにします。

int w = 640;
int h = 480;

void setup() {
  surface.setResizable(true);
  surface.setSize(w, h);
}

より積極的にキーを押すたびにウインドウサイズを変更することもできます。例えば、以下のようなコードでOKです。

void setup() {
  size(640, 480);
  surface.setResizable(true);
}

void draw() {
  rect(20, 20, width-40, height-40);
}

void keyPressed() {
  surface.setSize(int(random(100, 600)), int(random(100, 400)));
}

 

以上は仕様変更の話ですが、Processingのバージョン3にしてから
size(640, 480);
としたのにサイズの指定が効かず、全画面がウインドウになるケースが生徒さんの間で数件見受けられました。

この場合は、以下のようにします。

void setup() {
  surface.setResizable(true);
  surface.setSize(640, 480);
}

3Dモードの場合は、以下のようにP3Dモードにしてから、リサイズ可能にし、スクリーンサイズをセットします。

void setup() {
  size(640, 480, P3D);
  surface.setResizable(true);
  surface.setSize(640, 480);
}

void draw() {
  translate(width/2, height/2, 0);
  box(100, 100, 100);
}