MouseCursorData クラスとネイティブマウスカーソル (Flash Player 10.2)

Flash Player 10.2 から追加された新しい機能の一つに、「ネイティブマウスカーソル」 があります。これは、ビットマップデータを OS レベルのマウスカーソルとして使うことができる機能です。

従来の Flash Player 内の表示オブジェクトを利用する方法と比べると、格段にスムースに動作し、ステージの端で隠れてしまうこともありません。ネイティブカーソルを使うと、今までよりも表現の範囲を広げられそうですね。

MouseCursorData クラスと Mouse クラス

ネイティブマウスカーソルを実現するため、Flash Player 10.2 から flash.ui パッケージに MouseCursorData クラスが追加されました。このクラスは、カーソルとして表示するオブジェクトの情報を管理します。以下の 3 つの属性を持っています。

data: Vector.<BitmapData> カーソルとして表示するビットマップデータ
frameRate: Number         カーソルをアニメーション表示するときのフレームレート
hotSpot: Point            カーソルの基準点となる座標
 

data 属性に指定するビットマップデータの大きさは 32 x 32 ピクセル以下になります。これは OS 側の制限です。これより大きなビットマップを指定するとエラーは発生しませんが、表示もされません。

さて、Mouse クラスにも以下の 2 つのメソッドが追加されています。どちらも static なメソッドです。

registerCursor(name:String, cursor:MouseCursorData):void
ネイティブカーソルのデータを登録
 
unregisterCursor(name:String):void
指定されたネイティブカーソルの登録を削除
 

これらは、ネイティブマウスカーソルのデータ登録に関連するメソッドです。登録時には、データに固有の名前を指定します。

一旦データを登録したら、データの登録名を Mouse クラスの cursor 属性に設定します。これで、ネイティブマウスカーソルが使えるようになります。

下は、ネイティブマウスカーソルを表示するサンプルです。

// マウスカーソルに使用するデータを生成
var bitmap:Bitmap = new MyCursorData();
 
// ビットマップデータをベクターに設定
var cursorBitmaps:Vector.<BitmapData>;
cursorBitmaps = new Vector.<BitmapData>(1, true);
cursorBitmaps[0] = bitmap.bitmapData;
 
// MouseCursorDataオブジェクトを設定
var cursorData:MouseCursorData;
cursorData = new MouseCursorData();
cursorData.hotSpot = new Point(15,15);
cursorData.data = cursorBitmaps;
 
// MouseCursorDataオブジェクトの登録
Mouse.registerCursor("myCursor", cursorData);
Mouse.cursor = "myCursor";
 

上の例では、ベクターに設定したカーソルのデータの要素は 1 つだけですが、複数の BitmapData をベクターに設定すると、パラパラアニメーションのマウスカーソルを実現できます。その際は、カーソルアニメーションのフレームレートも指定します。

下は、複数の BitmapData を指定するサンプルコードです。

// 3 フレーム分のビットマップを生成
var frame1:Bitmap = new MyFrameData1();
var frame2:Bitmap = new MyFrameData2();
var frame3:Bitmap = new MyFrameData3();
 
// ビットマップデータを再生順に設定
var cursorBitmaps:Vector.<BitmapData>;
cursorBitmaps = new Vector.<BitmapData>(3, true);
cursorBitmaps[0] = frame1.bitmapData;
cursorBitmaps[1] = frame2.bitmapData;
cursorBitmaps[2] = frame3.bitmapData;
 
// MouseCursorDataオブジェクトを設定
var cursorData:MouseCursorData;
cursorData = new MouseCursorData();
cursorData.hotSpot = new Point(15,15);
cursorData.data = cursorBitmaps;
cursorData.frameRate = 1; // フレームレートを指定
 
// MouseCursorDataオブジェクトの登録
Mouse.registerCursor("myAnimatedCursor", cursorData);
Mouse.cursor = "myAnimatedCursor";
 

このように、複数のビットマップデータとフレームレートを指定するだけで自動的にアニメーションが再生されます。

ネイティブマウスカーソルか使えるかを知るために、Mouse クラスには、以下の static 属性 (読み取りのみ) も追加されました。


supportsNativeCursor:Boolean 現在の環境のネイティブマウスカーソルのサポート状況を示す
 

標準の OS のカーソルに戻すには、Mouse.cursor 属性に MouseCursor クラスの適当な定数を設定します。

Mouse.cursor =  MouseCursor.AUTO;  

 

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/143

コメント(1)

詳しい説明ありがとうございます。
デスクトップアプリ開発などを視野に入れると、結構重要な機能です。
"32 x 32 ピクセル以下" というところが残念なところかもしれません。

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      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  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261