マウスポインタの座標を知るには

◆PROCESSING 逆引きリファレンス

 カテゴリー:キーボード・マウス処理

マウスポインタの座標を知るには

【解説】

PROCESSINGではマウスが押された場合や動かされた場合、マウスポインタが画面上のどこにあるのかを知る事が可能です。

mouseClicked():マウスボタンクリック
mouseDragged():マウスドラッグ
mouseMoved():マウス移動
mousePressed():マウスボタン押下
mouseReleased():マウスボタンを離す
mouseWheel():ホイールボタンを回す

の各イベント関数に渡される MouseEvent オブジェクトのインスタンス変数を利用する事で、そのイベントが発生した時のマウスポインタ座標が取得できます。

またPROCESSINGが提供してくれる mouseX、mouseY、pmouseX、pmouseY 変数でも知ることができます。

【構文】

void  mouseClicked(  MouseEvent  event  );
void  mouseDragged(  MouseEvent  event  );
void  mouseMoved(  MouseEvent  event  );
void  mousePressed(  MouseEvent  event  );
void  mouseReleased(  MouseEvent  event  );
void  mouseWheel(  MouseEvent  event  );

【パラメータ】

MouseEvent : event : マウスイベントオブジェクト

event は MouseEvent オブジェクトのインスタンス変数です。event には、操作されたボタンの種類や、その時のマウスカーソルの座標などが保持されています。

詳しくは「マウスボタンが押された事を判定するには」記事か、github上のprocessing.github.ioを参照してください。

【戻り値】

void (なし)

【注意】

各イベント関数に渡される MouseEvent オブジェクトのインスタンス変数を用いると、そのイベントが発生した時のポインタ座標が取得できます。なにか操作された時のタイムリーな座標を知りたい場合は便利です。

座標の取得には MouseEvent オブジェクトが持つ getX()、getY() メソッドを利用します。

  • 横座標の取得 int  x  =  event.getX();
  • 縦座標の取得 int  y  =  event.getY();

戻り値の座標(x と y)は int型になります。

PROCESSINGが提供してくれる mouseX、mouseY、pmouseX、pmouseY  変数は draw() 関数などで利用します。

draw() 関数で用いた場合、mouseX、mouseY は、そのフレームループ時点でのマウスポインタ座標を、pmouseX、pmouseYは 1 つ前のフレームループ時点でのマウスポインタ座標を保持しています。

mouseX、mouseY、pmouseX、pmouseY 変数は、いずれも初期値は0です。

以下の様な感じで変化します。

●最初
mouseX = 0;  mouseY = 0;  pmouseX = 0;  pmouseY = 0;

●次の draw ループまでの間に、マウスポインタが(10, 20)  に移動
mouseX = 10;  mouseY = 20;  pmouseX = 0;  pmouseY = 0;

●次の draw ループまでの間に、マウスポインタが(30, 40)  に移動
mouseX = 30;  mouseY = 40;  pmouseX = 10;  pmouseY = 20;

注意点はmouseX、mouseY、pmouseX、pmouseY  が draw()関数のフレームループ毎と、イベント関数が呼び出された時点で更新される事です。

また戻される座標は、すべて実行結果ウィンドウの左上隅座標を(0, 0)とした相対座標です。ディスプレイ画面上での絶対座標ではありません。

mouseXY説明

なお、実行結果ウィンドウの内枠(描画領域)からマウスポインタが外れた(外に出た)場合、次に実行結果ウィンドウの内枠(描画領域)にマウスポインタが移動してくるまで、これらの変数は更新されません。

マウスポインタのスクリーン座標を知りたい場合は、「マウスポインタのスクリーン座標を知るには」記事を参照して下さい。

【関連記事】


サンプルプログラム

ボタンが押された際のマウスカーソル位置を取得する例:

マウスボタンが押された際に、該当位置に青い点を打ちます。

<出力サンプル>
getXY説明

 

フレーム毎にマウスカーソル位置を取得する例:

マウスを実行結果ウィンドウの上で動かすと、マウスポインタの位置に連続して青い点が描かれます。

<出力サンプル>
mouseXYsample

 

応用例:

マウスでクリックした箇所から、連続して線を描きます。
最初にマウスがクリックされた時は、clsMCLocationのローカル変数 x2 と y2 にクリックされた座標を記録します。
getXY応用説明1
次にマウスがクリックされると、最初の座標を x1 と y1 に移し替えて(shiftメソッド)、今クリックされた座標をx2 と y2 に記録します。その後、( x1, y1 ) – ( x2, y2 ) にかけて線を引きます。
getXY応用説明2

3回めにクリックされた場合も2回目同様です。結果として、どんどん線が伸びていきます。
getXY応用説明3

<出力サンプル>
getXY応用

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)