Webデザインの勉強と製作 | あかとんぼ

フェリカテクニカルアカデミーの学習をベースに、Webについての勉強と製作の過程をまとめています。

[Flash]⑨Mouseクラス

  • Mouseクラスを扱う方法
    • Mouseクラス
    • マウスの位置を知る
  • マウスカーソルを変更する
    • upDateAfterEvent関数

Mouseクラスを扱う方法

ムービークリップやボタンでイベントハンドラを扱う方法
②Mouseクラスのイベントリスナーを使う方法
  • Flashドキュメント中でクリックされたこと知りたい時などに使う
Mouseクラス

マウスポインタを制御したり、イベントリスナーによりマウスの変化をチェックする。

  • Mouse.show()メソッドなど
  • Mouse.onMouseDownイベントリスナーなど
マウスの位置を知る
  • イベントリスナー(MovileClip._xmouse)で知ることができる
  • ↑で取得できるのは指定したMovieClipの基準点からの相対座標
  • “_root.xmouse"で全体からの座標を取得

マウスカーソルを変更する

標準のカーソルを消し、その代わりにムービークリップをりんゲージから生成し、マウス座標に合わせることで、擬似的にマウスカーソルのように見せるテクニックです。

  • マウスカーソルの画像(通常/クリック時)を用意
  • ムービークリップシンボル化
  • 5Fでクリック時の画像になるように設定(up/downラベルとthis.stopを記述)
  • 各シンボルにリンゲージを設定「arrowCursorSym」…
  • クリックするとカーソルの形が変わる変更ボタンを作成 インスタンス名「handButton」…
  • シーン1にスクリプト記述
var handButton: Button;
var zoomButton: Button;
var arrowButton: Button;

var cursor: MovieClip;

/* リリースイベントに関数割り当て */
handButton.onRelease = changeCursor;
zoomButton.onRelease = changeCursor;
arrowButton.onRelease = changeCursor;

/*リスナーオブジェクトを生成、onMouseDown/Upイベントに関数割り当て.addListenerで登録 */
var mouseListener: Object = new Object();
mouseListener.onMouseDown = cursorDown;
mouseListener.onMouseUp = cursorUp;
Mouse.addListener( mouseListener );

/* 標準のカーソルを消し、_rootにカーソルのムービークップを作り、現在のマウス位置に置く*/
function changeCursor():Void
{
     Mouse.hide();

     if( this == handButton )
          cursor = _root.attachMovie( "handCursorSym", "cursorIcon", 1 );
     else if( this == zoomButton )
          cursor = _root.attachMovie( "zoomCursorSym", "cursorIcon", 1 );
     else
          cursor = _root.attachMovie( "arrowCursorSym", "cursorIcon", 1 );

     cursor._x = _root._xmouse;
     cursor._y = _root._ymouse;
    
     cursor.onMouseMove = cursorMove;
}

/* カーソル移動させる関数 updateAfterEventで更新 */
function cursorMove():Void
{
     this._x = _root._xmouse;
     this._y = _root._ymouse;
     updateAfterEvent();
}

/* カーソルを押されている画像にする */
function cursorDown():Void
{
     cursor.gotoAndStop("down" );
}

/* カーソルを押されていない画像にする */
function cursorUp():Void
{
     cursor.gotoAndStop( "up" );
}

f:id:akatonbo_web:20150529014154p:plain

upDateAfterEvent関数
  • グローバル関数(as3からは flash.events.TimerEvent.updateAfterEvent() )
  • フレームレートに関係なく画面を更新するため、フレームレートが低くても動きがなめらかになる
  • 多用すると重くなる