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:)

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top