74. Различия между rollOver/rollOut и mouseOver/mouseOut

Любой интерактивный объект (flash.display.InteractiveObject) имеет две пары очень похожих событий rollOver/rollOut и mouseOver/mouseOut. Оба они реагируют на то когда мышка входит в область объекта или покидает ее. Различия в поведении этих событий возникают только тогда, когда есть вложенные мувиклипы. События rollOver и rollOut не обращают внимание на наличие вложенных мувиклипов, когда мышка войдет в область объекта сработает rollOver, и только когда мышка покинет объект сработает rollOut. События mouseOver и mouseOut будут срабатывать на перемещение мышки над вложенными мувиклипами. mouseOver сработает когда мышка войдет в область объекта, если при дальнейшем движении курсор мышки войдет в область вложенного мувиклипа сработает mouseOut, когда мышка покинет вложенный объект вновь сработает mouseOver, хотя при этих перемещениях курсор мыши фактически не покидал области объекта. События mouseOver и mouseOut будут вести себя аналогично rollOver и rollOut если установить mouseChildren=false;
Лучше всего посмотреть пример:
Код:
// Основная кнопка var spriteButton:Sprite = new Sprite(); spriteButton.name = "spriteButton"; spriteButton.graphics.beginFill(0xFF0000); spriteButton.graphics.drawCircle(50,50, 50); //spriteButton.mouseChildren=false; // Вложенный в кнопку Sprite var spriteGraphics:Sprite = new Sprite(); spriteGraphics.name = "childrenSprite"; spriteGraphics.graphics.beginFill(0x00FF00); spriteGraphics.graphics.drawCircle(50,50, 15); // Добавляем на экран spriteButton.addChild(spriteGraphics); addChild(spriteButton); // События spriteButton.addEventListener(MouseEvent.ROLL_OVER, evnt); spriteButton.addEventListener(MouseEvent.ROLL_OUT, evnt); spriteButton.addEventListener(MouseEvent.MOUSE_OVER, evnt); spriteButton.addEventListener(MouseEvent.MOUSE_OUT, evnt); function evnt(e:MouseEvent):void { trace(e.type, "on", e.target.name); }

При однократном проведении мышки через всю кнопку:
Код:
// output rollOver on spriteButton mouseOver on spriteButton mouseOut on spriteButton mouseOver on childrenSprite mouseOut on childrenSprite mouseOver on spriteButton mouseOut on spriteButton rollOut on spriteButton

Если убрать комментарий со строки spriteButton.mouseChildren=false; то различий в поведении событий roll и mouse не будет.