[Processing]マウス座標の取得とArrayListを使った応用
Processingの勉強も続けてます。今日はマウス座標やマウス状態の取得を学びました。mouseXとmouseYというシステム変数で現在のマウス座標を取得します。またpmouseXとpmouseYというシステム変数で前フレームのマウス座標を取得します。「p」というのはpreviousとかの「pre(前の)」という接頭語の略ですかね。
mousePressedシステム変数は、マウスが押されているかをあらわしています。trueかfalseであらわしているので、if文の条件分岐で使用できます。そしてmouseButtonシステム変数は、押されているマウスボタンの種類をあらわします。LEFT、CENTER、RIGHTの3つの定数が対応しています。
mousePressed()、mouseClicked、mouseReleased()、mouseMoved()、mouseDragged()といったイベントハンドラ関数は、マウスの状態に応じて勝手に呼ばれる関数です。setup()がプログラムの最初に勝手に呼ばれるように、mousePressed()はマウスが押されたときに勝手に呼ばれます。
マウスを使った例として、マウスでクリックした地点から破片(火花?)が飛び散るというサンプルを作ってみました。マウスの左右ボタンの押下状態に反応して、破片が飛び散ります。マウスボタンを押したままドラッグすると、たくさん破片が飛び散ります。このサンプルは破片の管理にArrayListクラスを使うことで、破片の数の制限もなく、簡単に作ることができます。ただ、ArrayListのGenericsは使えないようなので、旧式の(1.4系の)実装方法で使わないといけないみたいです。
-
import java.util.ArrayList;
-
-
-
-
// 変数の初期化
-
}
-
-
// 画面を白く塗る
-
-
// マウスが押下の間はずっと破片を生成する
-
mouseDown();
-
}
-
-
// 破片の移動と描画
-
// 不要になった破片を消去
-
fragments.remove(i);
-
size--; // 最大数も減るので要注意
-
}
-
f.move();
-
}
-
}
-
-
// ベースの色を押されたマウスボタン決める
-
float hColor;
-
hColor = 0;
-
hColor = 60;
-
}
-
// 破片の作成
-
fragments.add(
-
);
-
}
-
}
-
-
// 個々の破片のオブジェクト
-
class Fragment {
-
float x, y, px, py;
-
float sx, sy;
-
float hColor;
-
float bColor;
-
boolean isAvailable;
-
-
// コンストラクタ
-
}
-
-
px = x;
-
py = y;
-
x = x + sx;
-
y = y + sy;
-
sy += GRAVITY; // 画面下方向に加速
-
bColor *= GRAVITY; // 明度を下げていく
-
-
isAvailable = false;
-
}
-
}
-
-
// 描画
-
}
-
}
実行結果

No Responses to “[Processing]マウス座標の取得とArrayListを使った応用”
コメントはまだありません。
Comments RSS
TrackBack Identifier URI
コメントする
