Comment arrêter la souris Out événement sur Flex toile de tir pour les éléments enfants
-
05-09-2019 - |
Question
J'utilise une toile itemRenderer pour un conteneur que j'utilise pour afficher des images. Voir le code de pseudo ci-dessous.
image = new Image();
image.source = data.@thumb;
this.addChild(image);
this.addEventListener(MouseEvent.MOUSE_OVER, enlarge(image));
this.addEventListener(MouseEvent.MOUSE_OUT, shrink(image));
Quand je souris sur la toile, la fonction ENLARGE appelée. Cependant, dès que je déplace la souris sur l'image, ou un autre élément enfant, l'événement MOUSE_OUT est tiré.
Quelqu'un peut-il me diriger dans la direction d'un moyen de désactiver ce comportement?
Merci:)
La solution
Vous devez utiliser MouseEvent.ROLL_OVER
et MouseEvent.ROLL_OUT
événements à la place.
De la documentation Flash CS4:
Lorsque la souris entre dans la zone d'un objet d'affichage ou dans la zone de l'un de ses enfants d'un objet qui ne fait pas l'un de ses enfants, l'objet d'affichage distribue l'événement de renversement. Ce comportement est différent de celui de l'événement mouseOver, qui est envoyé chaque fois que la souris entre dans la zone d'un objet enfant du conteneur d'objets d'affichage, même si la souris était déjà sur un autre objet enfant du conteneur d'objets d'affichage.
Autres conseils
Je suis d'accord avec Josh que les événements semblent ROLL_OVER
plus approprié à ce que vous faites. Cependant, vous devez être conscient du mouseChildren
de flash.display.DisplayObjectContainer
(un ancêtre de UIComponent
).
Rollout fonctionne pour moi. A propos du problème de comboBox: Vous pouvez également vérifier si la cible de l'événement est un enfant du conteneur.