Next: , Previous: Frame Configurations, Up: Frames


28.13 マウスの追跡

マウスを追跡(track)できると有用なことがあります。 つまり、マウスがどこにあるかを表す指示子を表示して マウスの移動に従って指示子を動かすのです。 効率よくマウスを追跡するには、マウスが実際に移動するまで待つ手段が必要です。

マウスを追跡する便利な方法は、マウスの移動を表すイベントを待つことです。 そうすれば、そのようなイベントを待てばマウスの移動を待てます。 さらに、発生しうるそれ以外の種類のイベントを扱うのも簡単です。 普通はマウスを永遠に追跡し続けたいのではなく ボタンを離すなどの別のイベントを待ちたいのでしょうから、 これは有用です。

— Special Form: track-mouse body...

このスペシャルフォームは、マウスモーションイベントを生成するようにして bodyを実行する。 典型的にはbodyではread-eventを使って モーションイベントを読み、それに従って表示を変更する。 マウスモーションイベントの形式については、 see Motion Events

track-mouseの値はbodyの最後のフォームの値である。 bodyは、ボタンを離したことを表すイベントや 追跡を終えるべきイベントに出会うと戻るように設計すること。

マウスの移動を追跡する普通の目的は、 現在の位置でボタンを押したり離すとなにが起こるかを スクリーン上に示すことです。

多くの場面では、テキスト属性mouse-face(see Special Properties) を使えば、マウスを追跡する必要はなくなります。 これはとても低いレベルで動作し、 Lispレベルでマウスを追跡するより滑らかに動作します。