2009-09-01 10 views
3

Je crée une application de retouche photo où, à un moment donné, la photo que vous éditez est censée être supprimée entre deux couches de DisplayObjects (une image d'arrière-plan et un masque d'image)Comment faire un clic sur un objet d'affichage dans Flash avec AS3?

Il y a un problème, cependant. Lorsque l'image que vous éditez est lâchée entre l'arrière-plan et les calques de masque d'image, elle devient non cliquable, et reste donc bloquée là, sans aucune chance de la faire glisser à nouveau. (L'éditeur de photos utilise la bibliothèque TransformManager.)

Je cherche un moyen de vous permettre de sélectionner l'image que vous êtes en train d'éditer, peu importe s'il y a un autre objet DisplayObject dessus. Et cela signifie probablement trouver un moyen de cliquer à travers le masque d'image.

Y a-t-il un moyen de faire cela?

J'ai essayé de définir mouseChildren = false sur imageMask, mais cela n'a pas eu l'effet désiré.

Merci beaucoup.

Répondre

8

Que pensez-vous de cela?

mask.mouseEnabled = false;

+0

Cette solution est meilleure que la réponse sélectionnée si vous n'avez pas besoin de contrôler le masque avec la souris. – avanderw

0

Je pense que je suis tombé sur un problème similaire, bien que dans as2.

Lorsque vous positionnez un clip sur un clip et que le clip sur le dessus comporte des événements de souris, il capture tous les événements de la souris pour qu'ils n'atteignent jamais le clip masqué. La solution est de n'avoir aucun événement de souris pour le clip supérieur et de positionner le clip sur l'événement souris de capture inférieur et de rediriger certains d'entre eux vers le clip supérieur (vous pouvez vérifier la position de la souris avec hitTest pour déterminer s'ils devraient être redirigés).

2

Vous pouvez toujours attacher un écouteur Click de souris au conteneur, puis utiliser GetObjectsUnderPoint et vérifier votre objet ou faire un test d'atteinte et voir si la position de la souris est sur votre objet prévu.

Le test de recherche ressemblerait à quelque chose comme ça !this.YourPhoto.hitTestPoint(stage.mouseX, stage.mouseY, false)

b

0

Jetez un oeil à ce que senocular-t here, plus précisément dans la méthode handleUpdate. Fondamentalement: obtenir une liste de tout sous mousePoint pour trouver votre objet.

9

J'ai eu des problèmes similaires et je réussi à le résoudre en utilisant à la fois

displayobject.mouseChildren = false; 

et

displayobject.mouseEnabled = false; 

sur l'objet que vous voulez cliquer.

0

J'ai eu un bug étrange que j'ai utilisé;

movieClip.mouseEnabled = false; 

mais ne fonctionnait pas pour une raison quelconque .. me rendait fou !! comme je l'ai utilisé tant de fois avant.essayé beaucoup de choses différentes rien n'a fonctionné alors j'ai supprimé le MovieClip et le créé un nouveau et travaillé .. ainsi le contenu de MovieClip doit avoir été corrompu ou quelque chose comme il avait une vieille zone de texte dynamique intégrée dans le MovieClip.