INDEX(各項目ごとの目次)

[HOME]  [Processing関係]  [Arduino関係]  [マテリアル関係]  [秋葉原工作マップ]

2008年用ですが、部分的に内容を更新しています(2010/06/14)。
また、[建築農業工作ゼミ2009-2010]とも連動していますので、そちらにも幾つかサンプルがあります。
:

5/12/2008

Processing マウス入力1

前回までは、ループ処理を使って図形を動かしていました。ただ、このままでは一方的に動画を表示していることに過ぎないので、録画されたコンテンツを再生していることと、何ら違いがありません。今回は、ユーザ側からのマウス入力のプログラムを加えることで、一方的に表示されている内容を、相互作用的な内容へと変化させます。
例として、前回の入れ子で動く正方形のプログラム(「Processingの描画サンプル」)にマウス入力に反応するプログラムを書き足します。ここでは、mousePressed()というマウスのボタン(左クリック)が押された時に発動するプログラムを付け足してみます。
そのためには、

void mousePressed(){
//ここにボタンが押されたときに発動するプログラムを書く
}

というプログラムを前回のプログラムの最後に付け足します。

例えば、クリックしたら二つの正方形の位置がそれぞれ0に戻るというプログラムであれば、

int a=10;
int b=a*12;
int c=b*3;
int ax; //小さい正方形(黒)のX座標の変数
int bx; //大きい正方形(赤)のX座標の変数

void setup(){
size(360,120);
noStroke();
}

void draw(){
background(0);
fill(250,20,20);
rect(bx,height/2-b/2,b,b);
bx=bx+1;
if(bx>c){
bx=-b;
}
fill(0);
rect(ax+bx,height/2-a/2,a,a);
ax++;
if(ax>b){
ax=-a;
}
}

void mousePressed(){
ax=0;
bx=0;
}

となります(axは前回用いたプログラムの小さな黒い正方形のx座標のための変数、bxは大きな赤い正方形のx座標のための変数)。draw()の中の上から4行目の「bx=bx+1;」を「bx+=1;」あるいは「bx++;」と書くこともできます。同様にさらに6行下の「ax++;」は「ax=ax+1;」あるいは「ax+=1;」と同じことです。以前の「Processingの基本操作 その3」でも触れましたが、「++」はインクリメントと呼ばれ、変数に+1を自己代入して+1ずつ増加させていくことです。
mousePressed()のほかにmouseReleased()mouseDragged()mouseMoved()があります。
mousePressed()は、マウスボタンを押した瞬間に発動します。
mouseRelease()は、マウスボタンを押して放される瞬間に発動します。
mouseDragged()は、クリックし、そのままドラッグしている間発動し続けます。
mouseMoved()は、マウスが動いている間(クリックしなくても)発動し続けます。
それぞれの挙動の違いを各自確かめてみてください。

0 件のコメント:



[目次:Processing関係]  [HOMEへ戻る]  [目次:Arduino関係]