マウスロックについて
■マウスロックの機能
マウスロックを使用すると、マウスカーソルが固定され、動かなくなります。
マウスイベントから、マウスの移動量を取得する事ができます。
これにより、モニタの画面端を超えるような移動を行ったとしても、正確なマウスの移動量を検出し続けることができます。
一人称視点の3Dゲームのマウス操作などに利用すると快適です。
Flash Player 11.2 以降、AIR 3.2 以降で、利用可能です。
マウスロックを開始する
■マウスロックを開始する
■マウスロックを開始する
stage.mouseLock プロパティを使用します。
true をセットします。
■マウスロックが利用可能なタイミングについて
フルスクリーン表示中のみ、利用可能です。
フルスクリーン動作中ではない場合、エラーが発生します。
■マウスロック機能のサポートについて
マウスロック機能は、環境によっては対応していません。
エラーの発生で、サポートの有無を判別できます。
■使用例
クリックして、フルスクリーン表示と、マウスロックを開始する
import flash.display.StageDisplayState;
import flash.events.MouseEvent;
// ------------------------------------------------------------
// マウスの左ボタンをクリックすると実行されるイベント
// ------------------------------------------------------------
stage.addEventListener( MouseEvent.MOUSE_DOWN , function (e:MouseEvent):void{
// ------------------------------------------------------------
// フルスクリーンを開始する
// ------------------------------------------------------------
stage.displayState = StageDisplayState.FULL_SCREEN;
// ------------------------------------------------------------
// マウスロックを開始する
// ------------------------------------------------------------
try{
stage.mouseLock = true;
}catch(e:Error){
}
});
マウスロックを終了する
■マウスロックを終了する
stage.mouseLock プロパティを使用します。
false をセットします。
■終了可能なタイミングについて
フルスクリーン表示中のみ、終了可能です。
フルスクリーン動作中ではない場合、エラーが発生します。
■自動的に解除される場合
ユーザーの操作によって、マウスロックは解除されます。
フルスクリーンを終了した場合。
Flash Player の設定ダイアログが表示された場合。
『 Alt + Tab 』などのキーボード操作など。
■使用例
マウスロックを開始してから、10 秒後に終了する
import flash.display.StageDisplayState;
import flash.utils.setTimeout;
import flash.events.MouseEvent;
// ------------------------------------------------------------
// マウスの左ボタンをクリックすると実行されるイベント
// ------------------------------------------------------------
stage.addEventListener( MouseEvent.MOUSE_DOWN , function (e:MouseEvent):void{
// ------------------------------------------------------------
// フルスクリーンを開始する
// ------------------------------------------------------------
stage.displayState = StageDisplayState.FULL_SCREEN;
// ------------------------------------------------------------
// マウスロックを開始する
// ------------------------------------------------------------
try{
stage.mouseLock = true;
}catch(e:Error){
}
// ------------------------------------------------------------
// 10 秒後に、関数を実行する
// ------------------------------------------------------------
setTimeout(function():void{
// ------------------------------------------------------------
// マウスロックを終了する
// ------------------------------------------------------------
try{
stage.mouseLock = false;
}catch(e:Error){
}
} , 1000 * 10);
});
マウスの移動量を取得する
■マウスイベントから移動量を取得する
■マウスが移動したか監視する
MouseEvent.MOUSE_MOVE イベントを使用します。
フルスクリーン動作中は、Stage にのみマウスイベントが伝達されます。
よって、stage にリスナーを登録する必要があります。
■マウスイベントから移動量を取得する
以下のプロパティを使用します。
マウスロック動作中ではない場合、常に 0 値が得られます。
プロパティ名 | 型 | 説明 |
movementX | Number | 水平方向のマウスの移動量を取得する。 |
movementY | Number | 垂直方向のマウスの移動量を取得する。 |
■使用例
マウスの移動量を取得する
import flash.display.StageDisplayState;
import flash.text.TextField;
import flash.events.MouseEvent;
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = stage.stageHeight - 20;
text_field.border = true;
stage.addChild(text_field);
// ------------------------------------------------------------
// マウスカーソルが移動したときに呼び出されるイベント
// ------------------------------------------------------------
stage.addEventListener( MouseEvent.MOUSE_MOVE , function (e:MouseEvent):void{
// 水平方向のマウスの移動量を取得
var x:Number = e.movementX;
// 垂直方向のマウスの移動量を取得
var y:Number = e.movementY;
// テキストフィールドに出力
text_field.text = x + " , " + y;
});
// ------------------------------------------------------------
// マウスの左ボタンをクリックすると実行されるイベント
// ------------------------------------------------------------
stage.addEventListener( MouseEvent.MOUSE_DOWN , function (e:MouseEvent):void{
// ------------------------------------------------------------
// フルスクリーンを開始する
// ------------------------------------------------------------
stage.displayState = StageDisplayState.FULL_SCREEN;
// ------------------------------------------------------------
// マウスロックを開始する
// ------------------------------------------------------------
try{
stage.mouseLock = true;
}catch(e:Error){
}
});