mouseover と rollover の違い

MouseEventTest

を理解しようとテストswfを作ってみた。
http://park.geocities.jp/mxmlc/misc/MouseEventTest.html

// MouseEventTest.as

package {
  import flash.display.*;
  import flash.events.*;
  import flash.text.*;


  public class MouseEventTest extends Sprite {
    private var tf:TextField;
    private var sp1:Sprite;
    private var sp2:Sprite;

    function MouseEventTest():void {
      stage.align = StageAlign.TOP_LEFT;
      stage.scaleMode = StageScaleMode.NO_SCALE;
      stage.addEventListener(Event.RESIZE, function (ev:Event):void {
        tf.height = stage.stageHeight;
        tf.width = stage.stageWidth;
        tf.scrollV = tf.maxScrollV;
      });

      tf = new TextField();
      tf.defaultTextFormat = new TextFormat("_sans", 12, 0);
      tf.mouseEnabled = false;
      tf.multiline = true;
      tf.width = stage.stageWidth;
      tf.height = stage.stageHeight;
      addChild(tf);

      sp1 = new Sprite();
      sp1.graphics.lineStyle(5, 0);
      sp1.graphics.beginFill(0x008800, 1.0);
      sp1.graphics.drawRoundRect(360, 30, 200, 200, 10,10);
      sp1.graphics.endFill();
      sp1.name = "Parent";
      addChild(sp1);

      sp2 = new Sprite();
      sp2.graphics.lineStyle(5, 0);
      sp2.graphics.beginFill(0x004400, 1.0);
      sp2.graphics.drawRoundRect(420, 80, 150, 100, 5,5);
      sp2.graphics.endFill();
      sp2.name = "Child";
      sp1.addChild(sp2);

      sp1.addEventListener(MouseEvent.MOUSE_OVER, onSpriteEvent);
      sp1.addEventListener(MouseEvent.MOUSE_OUT, onSpriteEvent);
      sp1.addEventListener(MouseEvent.ROLL_OVER, onSpriteEvent);
      sp1.addEventListener(MouseEvent.ROLL_OUT, onSpriteEvent);
      sp1.addEventListener(MouseEvent.MOUSE_UP, onSpriteEvent);
      sp1.addEventListener(MouseEvent.MOUSE_DOWN, onSpriteEvent);
      sp1.addEventListener(MouseEvent.CLICK, onSpriteEvent);
      // sp1.addEventListener(MouseEvent.DOUBLE_CLICK, onSpriteEvent);
      // sp1.addEventListener(MouseEvent.MOUSE_WHEEL, onSpriteEvent);
      // sp1.addEventListener(MouseEvent.MOUSE_MOVE, onSpriteEvent);

      sp2.addEventListener(MouseEvent.MOUSE_OVER, onSpriteEvent);
      sp2.addEventListener(MouseEvent.MOUSE_OUT, onSpriteEvent);
      sp2.addEventListener(MouseEvent.ROLL_OVER, onSpriteEvent);
      sp2.addEventListener(MouseEvent.ROLL_OUT, onSpriteEvent);
      sp2.addEventListener(MouseEvent.MOUSE_UP, onSpriteEvent);
      sp2.addEventListener(MouseEvent.MOUSE_DOWN, onSpriteEvent);
      sp2.addEventListener(MouseEvent.CLICK, onSpriteEvent);
      // sp2.addEventListener(MouseEvent.DOUBLE_CLICK, onSpriteEvent);
      // sp2.addEventListener(MouseEvent.MOUSE_WHEEL, onSpriteEvent);
      // sp2.addEventListener(MouseEvent.MOUSE_MOVE, onSpriteEvent);

      stage.addEventListener(Event.MOUSE_LEAVE, onLeaveEvent);
      stage.addEventListener(MouseEvent.MOUSE_OVER, onStageEvent);
      stage.addEventListener(MouseEvent.MOUSE_OUT, onStageEvent);
      stage.addEventListener(MouseEvent.ROLL_OVER, onStageEvent);
      stage.addEventListener(MouseEvent.ROLL_OUT, onStageEvent);
      stage.addEventListener(MouseEvent.MOUSE_UP, onStageEvent);
      stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageEvent);
      stage.addEventListener(MouseEvent.CLICK, onStageEvent);
      // stage.addEventListener(MouseEvent.DOUBLE_CLICK, onStageEvent);
      // stage.addEventListener(MouseEvent.MOUSE_WHEEL, onStageEvent);
      // stage.addEventListener(MouseEvent.MOUSE_MOVE, onStageEvent);
    }

    private function onSpriteEvent(ev:MouseEvent):void {
      tf.appendText("\n[SPRITE] " + getName(ev.target)
        + " - " + getName(ev.currentTarget)
        + " - " + ev.type);
      tf.scrollV = tf.maxScrollV;
    }
    private function onStageEvent(ev:MouseEvent):void {
      tf.appendText("\n[STAGE] " + getName(ev.target)
        + " - " + getName(ev.currentTarget)
        + " - " + ev.type);
      tf.scrollV = tf.maxScrollV;
    }
    private function onLeaveEvent(ev:Event):void {
      tf.appendText("\n[LEAVE] " + getName(ev.target)
        + " - " + getName(ev.currentTarget)
        + " - " + ev.type);
      tf.scrollV = tf.maxScrollV;
    }
    private function getName(target:Object):String {
      if (target == stage) return "stage";
      else return target.name;
    }
  }
}

よくわからん。
極力 mouseEnabled = false; mouseChildren = false; にしたほうが楽なのか。