Taille d'un clip déterminé en fonction de la distance souris - clip
Angoria
Messages postés8Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention21 novembre 2006
-
26 oct. 2006 à 16:23
Angoria
Messages postés8Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention21 novembre 2006
-
26 oct. 2006 à 21:23
Bonjour à tous.
J'essaie de tapper un code simple et clair pour que lorsqu'on approche la souris d'un clip ce clip grossisse en taille. J'ai réussi à faire...l'inverse. J'arrive à faire diminuer de taille un clip lorsque la souris s'approche, seulement j'ai essayé toutes les formules mathématiques possibles et inimaginables, je n'ai pas trouvé comment faire l'effet inverse. Voici le script sur mon clip :
onClipEvent (mouseMove) {
xnormal = _x;
ynormal = _y;
xmouse = _root._xmouse;
ymouse = _root._ymouse;
xdist = xmouse-xnormal;
ydist = ymouse-ynormal;
if (xdist<=200) {
_xscale = xdist; // c'est là que je cherche la bonne formule mathématique !
_yscale = ydist; // idem
} else {
_xscale = 100;
_yscale = 100;
}
}
(oui, en effet je veux une portée qui ne dépasse pas 200).
Je précise aussi qu'il n'y aura pas qu'un seul clip sur la scène, mais un bon nombre, et s'il faut faire des modifications ça serait bête de copier-coller l'AC sur chaque clip...J'ai donc tenté de collé le script dans un sous-clip, seulement tous mes clips réagissent de la même manière par rapport aux distances.
Merci de votre aide...
A voir également:
Taille d'un clip déterminé en fonction de la distance souris - clip
atchoumdu51
Messages postés194Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention16 juillet 20071 26 oct. 2006 à 16:56
Bonjour,
je te propose une petite solution qui te permet de choisir ton maximum de grossissemment par le biais de rapport max (taille max/taille au départ). Et en 200 ton clip aura pour taille la taille originale
var rapportMax = 2;
_xscale = rapportMax*100-xdist*(100-rapportMax)/200;
_yscale =
rapportMax*100-ydist
*(100-rapportMax)/200
;
Pour indication la recherche se fait en se disant: en 0 je veux que mon clip fasse cette taille et en 200 cette taille, ce qui te donne deux points et donc une droite d'équation ax+b qui passe par ces deux points (par les polynomes d'interpolation de Lagrange pour l'anecdote), tu résouta*0 + b max; d'ou b maxa*200 + b 100 d'ou a (100-b)/200 = (100-max)/200
Angoria
Messages postés8Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention21 novembre 2006 26 oct. 2006 à 21:19
Ok, merci beaucoup pour cette formule !!
[javascript:Insert_Emoticon('/imgs2/smile_big.gif');
]
J'ai amélioré le code et rajouté des fonctions qui permettent lorsque la valeur de la taille du carré devient négative l'effet soit inversé, ça donne ça :
onClipEvent (mouseMove) {
xpos = _x;
ypos = _y;
xmouse = _root._xmouse;
ymouse = _root._ymouse;
xdist = xmouse-xpos;
ydist = ymouse-ypos;
if (xdist<100 and xdist>-100 and ydist<100 and ydist>-100 ) {
var max = 2;
_xscale = max*100-xdist*(100-max)/100;
_yscale = max*100-ydist*(100-max)/100 ;
} else {
_xscale = 100;
_yscale = 100;
}
if (xdist<=-0) {
var max = 2;
_xscale = max*100-xdist*(1-max);
}
if (ydist<=-0) {
var max = 2;
_yscale = max*100-ydist*(1-max);
}
if(xdist<-100){
_xscale = 100;
}
if(ydist<-100 or ydist>100){
_yscale = 100;
}
}
Par contre, j'ai un peu de mal à épurer tout ça...(si c'est épurable !)
Et il y a aussi un autre problème ; lorsque l'on bouge la souris sur l'axe X par exemple, le carré va donc varier sa taille selon _xmouse mais l'effet ne s'atténue pas lorsque _ymouse varie ; en faisant le test avec plusieurs carrés disposés sur la scène, la ligne entière d'un même X grossit (il y a évidament le même problème pour Y).