2008年11月26日水曜日

マウスムーブイベントハンドラ

つづいて、マウスムーブイベントハンドラ関数です。ロード時処理で登録したので、マウスが動くとこの関数がコールされます。


cc_huu_tools_bp_20081024.processMouseMove = function(e) {


processMouseMoveプロパティにマウスムーブ時の処理を行う関数リテラルを設定します。引数eにはEventオブジェクトが渡されますので、マウスカーソルの位置を特定できます。


  var obj = cc_huu_tools_bp_20081024;


オブジェクト名が長いので、obj変数に入れて使用します。


  if (!e) {
    e = window.event;
  }


IEの場合、他とイベントモデルが異なるため、Eventオブジェクトが渡されない場合もあります。その場合は、グローバルのEventoオブジェクトを参照します。attachEventで登録されたイベントハンドラにはEventオブジェクトが渡されますので、今回の場合、この処理はなくても大丈夫のはずです(未確認)。


  obj.mousePosition.x =
    e.clientX + obj.getHorizontalScroll();
  obj.mousePosition.y =
    e.clientY + obj.getVerticalScroll();
};


マウスカーソルの位置を保存します。EventオブジェクトのclientX,clientYは、ドキュメントのスクロール分が反映されてませんので、obj.getHorizontalScroll()とobj.getVerticalScroll()でスクロール分を計算し、反映させます。

以上が、マウスムーブイベントハンドラです。

0 件のコメント: