Как остановить событие Mouse Out при запуске Flex Canvas для дочерних элементов - PullRequest
4 голосов
/ 17 февраля 2009

Я использую Canvas itemRenderer для контейнера, который я использую для отображения изображений. См. Псевдокод ниже.

image = new Image();
image.source = data.@thumb;
this.addChild(image);
this.addEventListener(MouseEvent.MOUSE_OVER, enlarge(image));
this.addEventListener(MouseEvent.MOUSE_OUT, shrink(image)); 

При наведении курсора на холст вызывается функция увеличения. Однако, как только я наведу указатель мыши на изображение или другой дочерний элемент, событие MOUSE_OUT вызывается.

Может кто-нибудь указать мне, как отключить это поведение?

Спасибо:)

Ответы [ 3 ]

16 голосов
/ 17 февраля 2009

Вместо этого следует использовать MouseEvent.ROLL_OVER и MouseEvent.ROLL_OUT.

Из документации по Flash CS4:

Когда мышь входит в область экранного объекта или область любого из его дочерних объектов из объекта, который не является одним из его дочерних элементов, экранный объект отправляет событие rollOver. Это поведение отличается от поведения события mouseOver, которое отправляется каждый раз, когда мышь входит в область любого дочернего объекта контейнера экранного объекта, даже если мышь уже находилась над другим дочерним объектом контейнера экранного объекта.

2 голосов
/ 17 февраля 2009

Я согласен с Джошем, что ROLL_OVER события кажутся более подходящими для того, что вы делаете. Однако вы должны знать о свойстве mouseChildren flash.display.DisplayObjectContainer (предок UIComponent).

1 голос
/ 08 ноября 2010

Rollout работает для меня. О проблеме comboBox: Вы также можете проверить, является ли цель события дочерней по отношению к контейнеру.

...