コンテンツにスキップ

ローカルのProcessingとOpen Processingで動作が異なる例

ローカルのProcessingとは、Processingの公式サイトからプログラムを自分のパソコンにダウンロードして、自分のパソコン(ローカル)で動かしているProcessingです。Open ProcessingはOpen Processingのwebサイトにアクセスして、ブラウザ上で動かしているProcessingです。

以下は、筆者が体験したローカルのProcessingとOpen Processingで動作が異なるケースのメモです。それぞれのエディタにコピー&ペーストして試してみるとよくわかります。まだあると思いますので、随時追加していきたいと思います。

なお、これらは

で確認したものです。

1.int関連

OpenProcessing(Pjs)ではintの扱いが厳密ではない

ローカルの Processing では int の扱いは厳密ですが、 OpenProcessing(Pjs) ではそうでもないようです。下記の例で、ローカルの Processing では、結果は 1 になるが、 OpenProcessing(Pjs) では、 xint 宣言されているのも関わらず、結果は 1.5 になってしまいます。

*//ローカルのProcessing(3.5.4)とOpenProcessing(Pjs)で動作が異なる例
// int処理の違い*
int x = 1;
x += 0.5;
println(x);

ローカルのProcessingでの結果

1

OpenProcessing(Pjs)での結果

1.5

従って、下記のようなプログラムでは、ローカルのProcessingでは円は動かず(xの値はずっと200のまま)、OpenProcessing(Pjs)では動きます(xの値は 200.5, 201, 201.5, 202, …と表示)。

int x = 200;
void setup(){
size(400,400);
}
void draw(){
background(255);
x += 0.5;
println(x);
fill(0);
ellipse(x,200,50,50);
}

※この他、xが配列の添字に使われた場合などでは、ローカルのProcessingとOpenProcessing(Pjs)ではエラーの出方などが違います。

2.日本語文字の拡大表示関連

ローカルのProcessingでは、日本語文字を拡大表示しようとすると、文字化けする!

ローカルのProcessing(バージョン3.5.4)で、text()で日本語文字を画面に表示する場合、通常の表示なら問題ないが、textSize()で拡大表示しようとすると文字化けして□□□と表示されてしまいます。

Open Processingでは、この文字化けは発生しません。

String emoji="SCORE:";
String jmoji="得点:";
void setup() {
size(1100, 600);
}
void draw() {
background(0);
textSize(50);
text(emoji, 100, 200);
text(jmoji, 100, 300);
}

img01.png

ローカルのProcessing

img02.png

Open Processing

※ローカルのProcessingで日本語文字を拡大表示させたい場合は、下記のページを参照してください。

日本語文字を拡大表示する小技