マウスホイールを判定するには

◆PROCESSING 逆引きリファレンス

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

マウスホイールを判定するには

【解説】

PROCESSINGでは様々なマウス操作をとらえて、処理を行うことが出来ます。
その1つにマウスホイールボタンの回転を知る方法があります。

Zoom Mouse Wheel
(画像URL:AutoCAD 2012 様)

上の図は一般的なマウスのホイールボタンです。あ、説明するまでも無いですよね(汗)。ホイールボタンの回転は、mouseWheel() イベント関数で処理可能です。

【構文】

void  mouseWheel(  );

void  mouseWheel(  MouseEvent  event  );

【パラメータ】

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

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

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

【戻り値】

void (なし)

【注意】

mouseWheel(   event  ) 関数に渡される MouseEvent 型のインスタンス変数を利用する事で、ホイールされた方向(回転方向)を知る事が可能です。

回転方向はどうでも良くて、ホイールボタンが回された事だけが知りたい場合は、MouseEvent型のインスタンス変数を引数に伴わない mouseWheel() 関数を利用しても良いでしょう。

マウスホイールの回転方向を知るには、MouseEventオブジェクトが持つ getAmount()  メソッドを利用します。

float  f  =  MouseEvent.getAmount();

ホイールボタンを手前から奥に向かって(操作者から見た場合、操作者とは反対方向に)回すと、 f は負の値(-1)を返します。

mouseWheelUpAmount
(画像URL:FUJI XEROX 様)

その逆で奥から手前に向かって(操作者側に)回すと、f は正の値(1)を返します。

mouseWheelDownAmount
(画像URL:FUJI XEROX 様)

私の環境では試せませんでしたが、公式リファレンスに以下の注意があります。「 “natural” スクローリングを有効にした OS X では、その値は反対となる 」。

これは getAmount() が戻す値が、「OS XとWindowsでは、逆になる事があるよ」という意味だと思われます。MACを使われている方は注意してください。

ちなみにマウスの中には、ホイールボタンが押せるタイプの商品もあります。ホイールボタンが押下された事は mouseClicke( ) イベント関数で処理可能です。サンプルプログラムを掲載しましたので参考としてください。

私の手持ちのマウスではホイールボタンは直下に押し込む事しかできません。ホイールボタンを左右に傾ける事が可能なマウスもあるかと思いますが・・・その場合どうなるのかは、良くわかりません(汗)。

mouseWheel( ) 関数とmouseWheel( event ) 関数を2つとも定義すると、mouseWheel( event ) 関数が優先して呼び出されます。この時、イベントを引数に取らないmouseWheel( ) 関数は呼び出されません。注意してください。

【関連記事】


サンプルプログラム

ホイールボタンの回転を検知する例:

(上記サンプルは Qiita 様に投稿されていたものを、改編して利用しています。)

マウスホイールを回転させると、中央に描かれた立方体がX軸方向に回転します。

<出力サンプル>
mouseWheelサンプル

 

ホイールボタンの押下を検知する例:

スケッチフォルダ配下の data フォルダに、IPAexGothic-48.vlwフォントが格納されている事が前提です。

ホイールボタンをクリックすると、画面中央に ”中央” の文字が表示されます。

<出力サンプル>
mouseWheelサンプル2

 


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

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

コメントを残す

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

CAPTCHA


*

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