Définir une zone réactive non-rectangulaire à partir de xmouse et ymouse > c'est

Résolu
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - 26 sept. 2005 à 17:29
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - 27 sept. 2005 à 13:53
Salut,

Pour les besoins d'une animation spécifique, j'essaye de créer une zone réactive qui ne soit pas rectangulaire! Ce qui me pose problème, c'est que je ne peux absolument pas utiliser un bouton pour la créer (ça me pose un tas de problème d'interaction avec les boutons qui interviennent au dessus de la zone réactive).
J'ai donc pensé à utiliser xmouse et ymouse dans un onMouseMove et à placer plusieurs zones réactives de ce type à des tailles différentes les unes à côté des autres pour recréer ma forme mais ça ne convient pas car ma zone réactive possède un grand bord arrondi. A moins de créer de très fines zones réactives les unes en dessous des autres, ce qui risque d'être un peu tarabiscotté, je ne vois pas comment appliquer cette méthode, qui se défini sous ce code:

//crée un objet d'ecoute
ecoute = new Object();
//si la souris bouge
ecoute.onMouseMove = function() {
//on compare les coordonnés de la souris à la zone qu'on desire rendre "sensible"
if (_xmouse>limitXmini & _xmouse<limitXmaxi & _ymouse>limitYmini& _ymouse<limitYmaxi) {
//instruction

}
};
//attache l'ecoute a la souris
Mouse.addListener(ecoute);

N'y a t'il pas moyen d'y faire entrer les coordonnées d'une zone non-rectangulaire?
A voir également:

30 réponses

slagt Messages postés 232 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 29 mars 2011
26 sept. 2005 à 19:14
onMouseMove = function ()

{

if (zonereactive.hitTest (_xmouse, _ymouse, true))

clip_container.gotoAndStop (1);

}

^^
3
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
26 sept. 2005 à 20:59
Salut

oui et non c pas tt a fait ca

hitTest permet de virifier si 2 clips se touchent ou si un clip "touche" une delimitation

si tu fait un clip zone active (transparent), tu peux savoir si la sourie est dessus (le touche) via

zoneSensible.hitTest(_xmouse, _ymouse);

si ce hitTest te renvois vrai (true) c'est que ta sourie est au bon endroit pour activer tes boutons

onMouseMove = function(){

if (zone.hitTest(_xmouse,_ymouse,true) and clipanimbouton._currentframe == 1){

clipanimbouton.play();

}

}

je test aussi si ton anim sur le bouton est lancé car si elle est lancer, il faut pas la relancé des que la sourie bouge

++

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
3
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
26 sept. 2005 à 23:00
Pour faire un test, tu fais:



if (zonereactive.hitTest (_xmouse, _ymouse, true))



équivalent à:



if (zonereactive.hitTest (_xmouse, _ymouse, true)==true)



pour tester que c'est faux:



if (zonereactive.hitTest (_xmouse, _ymouse, true)==false)



ou



if (!zonereactive.hitTest (_xmouse, _ymouse, true))



Voilà...



@+! Samy
3
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
26 sept. 2005 à 17:39
Salut

tu peux toujours mettre un
clip avec _alpha à 0 au dessus de tt les autres qui te servira de
bouton ... et tu peux lui donner la forme que tu veux



si tu souhaite vraiment jouer avec les coordonnées, va te falloir une
matric représentant les coordonées sensibles et parcourir la marice
pour savoir si t'es en zone reactive ou non

ca risque d'etre tres lourd a géré surtout jsute pour un bouton :)

++


Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
26 sept. 2005 à 18:18
Je viens d'essayer malheureusement quand j'utilise un clip-alpha 0, les boutons se situant en dessous de celui-ci ne fonctionnent plus!
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
26 sept. 2005 à 18:36
Salut

ben oui si t'as des boutons dessous et met une action sur le clip les bouton de dessous sont inactif c normal

et les zones actives de bontons sufficent pas ?

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
26 sept. 2005 à 18:38
Change pour des clips à la place des boutons! Comme ça, au survol de ta zone réactive tu pourras changer l'état:



zoneReactive.onRollOver=function(){

clipBoutonEnDessous.gotoAndStop(2);

}

zoneReactive.onRollOut=function(){

clipBoutonEnDessous.gotoAndStop(1);

}

zoneReactive.onReleaseOutside=function(){


clipBoutonEnDessous.gotoAndStop(1);


}



Ca devrait faire l'affaire!



@+! Samy
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
26 sept. 2005 à 18:41
Ouais...c'est vrai que le plus simple c'est de faire une zone direct
dans le bouton! Elle peut être différente de la forme de ton bouton!
0
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
26 sept. 2005 à 18:41
Ben non, sinon ce serait tout simple! En fait, concrètement, j'aimerais créer une zone de mon interface qui soit figée et inactive quand la souris en est éloignée et qui s'active quand la souris s'en approche et donc mon idée était de créer une plage de couleur qui s'illumine sous mes boutons lorsqu'on la survole et par la même occasion, déclanche aussi l'illumination de mes boutons.
0
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
26 sept. 2005 à 18:44
Oups, je répondais à Benjy!

Oui, changer mes boutons en clip, c'est ce qu'on m'a conseillé aussi ailleurs et je crois que c'est ce que je vais faire mais bon, ça veut dire aussi que je suis bon pour tout modifier surtout que mes boutons sont relativement complexes!
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
26 sept. 2005 à 18:46
La solution des clips te permet d'illuminer plusieurs "clip-boutons" à
la fois. Pour faire un truc progressif, je vois bien un onEnterFrame
qui fasse la différence (pointRéférence-positionSouris) mais bon...ça
c'est juste une p'tite idée en passant!



@+! Samy
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
26 sept. 2005 à 18:48
Pas forcément, tu vas dans propriétés, tu changes bouton par clip et tu peux reprendre les images de tes boutons sans problème



Rq: tu peux faire un gotoAndPlay() aussi...si tu veux animer tes boutons et pas te limiter à 2 états figés.
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
26 sept. 2005 à 18:49
Salut

BIEN SUR QUE SI LA FORME DE LA ZONE ACTIVE PEU ETRE DIFFERENTE DE LA FORME DU BOUTON

c'est justement l'interret de la zone active

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
26 sept. 2005 à 18:53
Salut

goldenboy > oki pour le
changement de type dans le panneau de propriete mais faut pas oublier
de le changer le type aussi dans la bibliotheque ...

ct juste pour infos :)

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
26 sept. 2005 à 18:55
Salut

j'avais pas capté un truc

tu veux activer des boutons qui sont SOUS une zone active ?? c'est bien ca en fait ?

quel est l'interret ? car t boutons vont pas se cliquer tt seuls si la sourie est pas dessus (loin de ta zone active)


Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
0
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
26 sept. 2005 à 19:04
Je veux que ma zone reactive lance un gotoAndPlay(); vers un clip-container dans lequel sont mes boutons!

Donc:

_root.zonereactive.onRollOver=function(){
_root.clip_container.gotoAndSto(1);
}

Dans le clip-container, de la frame 1 à 10, on a une interpolation qui amène progressivement l'illumination des boutons, lesquels se situent sur la frame 10 de mon clip-container!
0
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
26 sept. 2005 à 19:05
Je voulais dire:

_root.zonereactive.onRollOver=function(){
_root.clip_container.gotoAndPlay(1);
}

Dans le clip-container, de la frame 1 à 10, on a une interpolation qui amène progressivement l'illumination des boutons, lesquels se situent sur la frame 10 de mon clip-container!
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
26 sept. 2005 à 19:20
Salut

ah ok j'avais mal suivit alors ...

en effet comme dis slagt, le hitTest devrai fonctionné nikel pour ce que tu veux faire ...

++

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
0
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
26 sept. 2005 à 20:48
D'après ce que me propose Slagt et d'après ce que je lis sur la méthode hitTest:

MovieClip.hitTest(x, y, typeForme)

Ca signifie que je dois entrer les coordonnées d'une zone dans laquelle mon clip/zone reactive et les boutons entrent en collision? Comme je le comprend, dans cette zone, Flash va détecter les risques de problèmes liés à la collision et va permettre que les actions soit jouées sur les 2 objets (bouton et clip) malgré tout?
0
Gizmil Messages postés 709 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 1
26 sept. 2005 à 21:03
Argh! Ouais mais non, je comprend pas à quoi ça me sert le hitTest!

onMouseMove = function ()
{
if (zonereactive.hitTest (_xmouse, _ymouse, true))
clip_container.gotoAndStop (1);
}

Si j'interpète correctement (mais je n'en suis pas sûr) le code de Slagt, ça signifie:

Lorsque je bouge la souris, si une collision a été détectée sur la zone réactive, alors le clip container va à la frame 1.

A quoi ça me sert? Je rappelle que j'ai besoin de pouvoir cliquer sur mes boutons sans que la collision par la zone réactive (clip) n'interfère sur leur fonctionnement. Je ne vois pas bien en quoi ça m'aide de pouvoir détecter cette collision! Ou alors, j'ai rien compris, ce qui est possible aussi!
0