マウス入力のキャプチャ

Flash Player 9 以降、Adobe AIR 1.0 以降

マウスクリックにより、インタラクティブ機能のトリガーに使用できるマウスイベントが作成されます。 イベントリスナーをステージに追加して、SWF ファイル内で発生するマウスイベントを監視できます。 InteractiveObject クラスを継承するステージ上のオブジェクト(Sprite や MovieClip など)にイベントリスナーを追加することもできます。これらのリスナーはオブジェクトがクリックされるとトリガーされます。

キーボードイベントと同様に、マウスイベントはバブルします。 次の例では、 square はステージの子であるため、四角形がクリックされると、スプライト square および Stage オブジェクトの両方によってイベントが送出されます。

var square:Sprite = new Sprite(); 
square.graphics.beginFill(0xFF0000); 
square.graphics.drawRect(0,0,100,100); 
square.graphics.endFill(); 
square.addEventListener(MouseEvent.CLICK, reportClick); 
square.x = 
square.y = 50; 
addChild(square); 
 
stage.addEventListener(MouseEvent.CLICK, reportClick); 
 
function reportClick(event:MouseEvent):void 
{ 
    trace(event.currentTarget.toString() +         " dispatches MouseEvent. Local coords [" +         event.localX + "," + event.localY + "] Stage coords [" +         event.stageX + "," + event.stageY + "]"); 
}

上記の例では、マウスイベントには、クリックに関する位置情報が含まれます。 localX プロパティと localY プロパティには、表示チェーン内の最下位の子でのクリックの場所に関する位置情報が含まれます。例えば、 square の左上隅をクリックすると、この位置は square の基準点であるため、ローカル座標の [0,0] が表示されます。一方、 stageX プロパティと stageY プロパティでは、ステージ上でのクリックのグローバル座標が参照されます。同じ場所をクリックすると、グローバル座標の [50,50] が表示されます。これは、 square がこの座標に移動されたためです。ユーザー操作に応答する方法に応じて、これらの座標ペアの両方を使用できます。

注意: フルスクリーンモードでは、マウスロックを使用するようにアプリケーションを設定できます。マウスロックを使用すると、カーソルが無効化され、境界のないマウス動作が可能になります。詳細については、 フルスクリーンモードの操作 を参照してください。

MouseEvent オブジェクトには、 altKey プロパティ、 ctrlKey プロパティ、 shiftKey Boolean プロパティがあります。これらのプロパティを使って、Alt キー、Ctrl キー、または Shift キーがマウスクリックと同時に押されていたかどうかを確認することができます。

ステージ上でのスプライトのドラッグ

ステージ上で Sprite オブジェクトをドラッグできるようにするには、Sprite クラスの startDrag() メソッドを使用します。その例を次のコードに示します。

import flash.display.Sprite; 
import flash.events.MouseEvent; 
 
var circle:Sprite = new Sprite(); 
circle.graphics.beginFill(0xFFCC00); 
circle.graphics.drawCircle(0, 0, 40); 
 
var target1:Sprite = new Sprite(); 
target1.graphics.beginFill(0xCCFF00); 
target1.graphics.drawRect(0, 0, 100, 100); 
target1.name = "target1"; 
 
var target2:Sprite = new Sprite(); 
target2.graphics.beginFill(0xCCFF00); 
target2.graphics.drawRect(0, 200, 100, 100); 
target2.name = "target2"; 
 
addChild(target1); 
addChild(target2); 
addChild(circle); 
 
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)  
 
function mouseDown(event:MouseEvent):void 
{ 
    circle.startDrag(); 
} 
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); 
 
function mouseReleased(event:MouseEvent):void 
{ 
    circle.stopDrag(); 
    trace(circle.dropTarget.name); 
}

詳しくは、 位置の変更 でマウスのドラッグ操作の作成に関する節を参照してください。

AIR でのドラッグ&ドロップ

Adobe AIR では、ドラッグ&ドロップ機能のサポートを有効にすると、アプリケーションとの間でデータをドラッグインまたはドラッグアウトできるようになります。詳しくは、 AIR でのドラッグ&ドロップ を参照してください。

マウスカーソルのカスタマイズ

マウスカーソル(マウスポインター)を非表示にしたり、ステージ上の任意の表示オブジェクトと入れ替えたりすることができます。 マウスカーソルを非表示にするには、 Mouse.hide() メソッドを呼び出します。カーソルをカスタマイズするには、 Mouse.hide() を呼び出し、 MouseEvent.MOUSE_MOVE イベントについてステージを監視し、表示オブジェクト(カスタムカーソル)の座標をイベントの stageX プロパティと stageY プロパティに設定します。次の例は、この操作の基本的な実行方法を示したものです。

var cursor:Sprite = new Sprite(); 
cursor.graphics.beginFill(0x000000); 
cursor.graphics.drawCircle(0,0,20); 
cursor.graphics.endFill(); 
addChild(cursor); 
 
stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor); 
Mouse.hide(); 
 
function redrawCursor(event:MouseEvent):void 
{ 
    cursor.x = event.stageX; 
    cursor.y = event.stageY; 
}