CLICK vs MOUSE_UP

InteractiveObjectのclickとmouseUpというイベントは、ドキュメントを読んでもその違いがよくわかりません。

【click】
ユーザーが InteractiveObject をポインティングデバイスのメインボタンでクリックしたときに送出されます。

【mouseUp】
ユーザーがFlash PlayerウィンドウのInteractiveObjectインスタンスの上でポインティングデバイスのボタンを解放したときに送出されます。

んー?これを読んで2つのイベントの違いが分かる人は、恐らくいないのではないでしょうか。

そんなわけで、こんなテストをしてみましょう。

var sprite:Sprite = new Sprite();
with (sprite.graphics) {
  beginFill(0x333333);
  drawRect(10, 10, 100, 25);
  endFill();
}
addChild(sprite);

sprite.addEventListener(MouseEvent.CLICK, traceEventType);
sprite.addEventListener(MouseEvent.MOUSE_UP, traceEventType);

function traceEventType(event:MouseEvent):void {
  trace(event.type);
}

まず、矩形の上でマウスをクリックすると、mouseUpとclickという2つのイベントが両方ディスパッチされるのが分かります。

では次に、矩形上ではない別の場所でマウスのボタンを押下し、そのまま矩形上にマウスポインタを移動し、そこでボタンを放してみましょう。すると今度はmouseUpというイベントのみがディスパッチされます。なるほどねー。

では、rollOverとmouseOverの違いは?rollOutとmouseOutの違いは?ということになりますが、これはもっと複雑な模様で、野中大先生のこちらの解説を読んで「むむー」と頭を捻ってみると良いかと思われます。