Flash : Désactiver partiellement la zone active de boutons

  • Créateur du sujet Créateur du sujet cirdan
  • Date de début Date de début

cirdan

Membre actif
10 Janvier 2007
244
8
Québec
Bonjour,

Dans mon Flash, on peut faire apparaître des movie clip dragables. Le problème est quand qu'un movie clip est par dessus un bouton, le bouton reste cliquable au travers de mon movie clip, j'aimerais désactiver les boutons sous les movie clip. Mais, j'aimerais aussi que quand le movie clip cache partiellement un bouton, que le bouton reste cliquable seulement dans la zone non couverte par le movie clip.

Ma première idée est de mettre une condition hitTest à chaque movie clip (onEnterFrame) dragable pour quand la souris touche à un de ceux la, qu'il call une fonction désactivant (enabled) tous les boutons... mais je trouve cela lourd pour rien et non optimal!

Il y a t'il un moyen de faire que Flash ignore la partie de la zone active des boutons qui sont dessous un movie clip ou faut le faire à la main comme j'ai dit plus haut?

Merci
 
Il y a t'il un moyen de faire que Flash ignore la partie de la zone active des boutons qui sont dessous un movie clip ou faut le faire à la main comme j'ai dit plus haut?

Non, il faut le faire à la main, flash ne sait pas gérer ces choses là tout seul.

Par contre, tu peux te servir d'un de ses bugs (ou particularité comme tu veux) : quand un bouton est au dessus d'un bouton, seul le plus haut fonctionne.

Donc si tu veux que le clip du dessus empeche le clic sur celui de dessous, tu mets dessus un bouton invisible qui prend toute la taille du clip, avec la propriété "useHandCursor" sur false, et une fonction de release vide : this.leBoutonEmpecheurSurZone.onRelease = function() {}; .

Donc je resume : ton clip par dessus a un bouton qui ne fait rien qui couvre toute sa surface et qui n'utilise pas le curseur main. Quand ce clip est au dessus d'un autre, si on clique sur la zone couverte, c'est le faux bouton qui ne fait rien qui agit, celui du clip de dessous ne reçoit pas l'événement de souris. Du hitTest à pas cher ! (mais il est vrai que c'est un chouilla tordu... avec des coordonnées ça doit se faire aussi...)

Tu peux aussi diviser la partie bouton de ton clip de dessous en 3 boutons rectangulaires qui changent de taille en fonction de la position du coin du clip de dessus voir schema (encore plus tordu :D)

flash-schema-recouvr.jpg


#edit : à la reflexion, la première idée est nettement meilleure :D
 
Merci de ta réponse obi wan,

Je vais donc mettre un bouton transparent dans le fond de mon movie movie clip et forcer le curseur flèche (useHandCursor, false) au survol de ce bouton et je te donne des nouvelles!

Que la force du côté clair soit avec toi! :D:D:D
 
Mille merci!
C'est la joie totale, ça fonctionne à la perfection!!! :zen:
 
Que la force du côté clair soit avec toi! :D:D:D

à vrai dire quand je relis mon post j'ai pas bien l'impression qu'elle était avec moi :D :D
content que ça fonctionne en tout cas, parce que plus j'y réflechis, et plus je me dis que détecter les recouvrements en code pur c'est difficile.