ネイティブマウスカーソルの設定は、今後も使用頻度が高そうなので、使い回しの出来るクラスにしておくことにしました。
※細かな設定は省略してあります。
CustomMouseクラス
cursorプロパティ
Mouseクラスのcursorプロパティへのアクセスをラップしたもの。ネイティブカーソルの名前。
registerCursorメソッド
指定したデータを持つ指定した名前のネイティブカーソルを登録する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package com.narudesign.tool { import flash.display.BitmapData; import flash.geom.Point; import flash.ui.Mouse; import flash.ui.MouseCursorData; public class CustomMouse { public static function get cursor():String { return Mouse.cursor; } public static function set cursor(value:String):void { Mouse.cursor = value; } public static function registerCursor(na:String, bd:BitmapData):void { var w:int = bd.width; var h:int = bd.height; var vec:Vector.<BitmapData> = new Vector.<BitmapData>(); vec[0] = new BitmapData(w, h, true, 0x0); vec[0].draw(bd); var cursorData:MouseCursorData = new MouseCursorData(); cursorData.hotSpot = new Point(0, 0); cursorData.data = vec; Mouse.registerCursor(na, cursorData); } public function CustomMouse() { } } } |
サンプル
マウスカーソルの位置、状況に応じて見た目を変える(ドラッグ可能なオブジェクトの上では「開いた手」、ドラッグ中には「閉じた手」、ボタンの上では「指差している手」)。
This movie requires Flash Player 11
マウスカーソルの画像ファイルをライブラリに読み込み、リンケージを設定します。
※ネイティブカーソルとして登録できる画像サイズは、32×32ピクセル以内です。
ここでは、「hand_open.png(開いた手)」「hand_close.png(閉じた手)」「hand_point.png(指差している手)」の3つのPNG画像ファイルをライブラリに読み込み、それぞれのクラス名を「CustomHandOpen」「CustomHandClose」「CustomHandPoint」と設定してあります。
ドキュメントクラスのソースは以下のとおり。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
package { import com.narudesign.tool.CustomMouse; import flash.display.Sprite; import flash.events.MouseEvent; import flash.ui.MouseCursor; public class CustomMouseTest extends Sprite { public function CustomMouseTest() { CustomMouse.registerCursor("myCursorHandOpen", new CursorHandOpen); CustomMouse.registerCursor("myCursorHandClose", new CursorHandClose); CustomMouse.registerCursor("myCursorHandPoint", new CursorHandPoint); CustomMouse.cursor = MouseCursor.ARROW; this["bg"].addEventListener(MouseEvent.ROLL_OVER, onRollOverBG); this["objDrag"].addEventListener(MouseEvent.ROLL_OVER, onRollOverDrag); this["objDrag"].addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownDrag); this["objDrag"].addEventListener(MouseEvent.MOUSE_UP, onMouseUpDrag); this["objButton"].addEventListener(MouseEvent.ROLL_OVER, onRollOverButton); } function onRollOverBG(event:MouseEvent):void { CustomMouse.cursor = MouseCursor.ARROW; } function onRollOverDrag(event:MouseEvent):void { CustomMouse.cursor = "myCursorHandOpen"; } function onMouseDownDrag(event:MouseEvent):void { event.currentTarget.startDrag(); CustomMouse.cursor = "myCursorHandClose"; } function onMouseUpDrag(event:MouseEvent):void { event.currentTarget.stopDrag(); CustomMouse.cursor = "myCursorHandOpen"; } function onRollOverButton(event:MouseEvent):void { CustomMouse.cursor = "myCursorHandPoint"; } } } |
ソースファイルは、こちらからダウンロード
コメントを残す
コメントを投稿するにはログインしてください。