ГлавнаяActionScript 3 — «100 советов» › Различия между rollOver/rollOut и mouseOver/mouseOut

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

June 19th, 2006
Любой интерактивный объект (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 не будет.

Категория: ActionScript 3 — «100 советов» Ярлыки: ,

Смотрите также

Свойство mouseChildren DisplayObjectContainer contains()
  1. Пока без комментариев.
  1. Пока нету.