Deplacement et zoom lors d'un clique

Résolu
Signaler
Messages postés
6
Date d'inscription
jeudi 16 novembre 2000
Statut
Membre
Dernière intervention
23 juin 2005
-
Messages postés
6
Date d'inscription
jeudi 16 novembre 2000
Statut
Membre
Dernière intervention
23 juin 2005
-
Je vais essayer d'etre clair..

J'ai une clip sur lequelle je me déplace a l'aire de boutons qui
indiquent les coordonnées où placer "la caméra". tout ca grace à ces
quelques lignes :



Sur mon clip à déplacer



onClipEvent (load) {

_root.targetx = 210;

_root.targety = 4;

speed = 20;

_root.onEnterFrame = function() {

_x += (_root.targetx-_x)/speed;

_y += (_root.targety-_y)/speed;

};

}

onClipEvent (enterFrame) {

if (_y targety && _x targetx) {

delete this.onEnterFrame;

}

}



et sur mes boutons ce code que j'ai pris ca sur un tutorial ! Bon le
résultat marche, je peut déplacer mon clip jsute en créant un bouton
avec mes coordonées du genre :

on (release) {

_root.targetx = 200;

_root.targety = 150;

}



Maintenan je vousdrais avoir en même temps que mon déplacement mon parapmère de zoom sur mon ce clip.



J'ai donc essayer d'utiliser les commande _xscale et _yscale seulement
je n'arrive pas a avoir de transition fluide. Mon zoom est instantané
(ce qui est logique).



Ce que j'aurais espéré c'est arriver à un mettre sur mon bouton quelque chose du genre

on (release) {


_root.targetx = 200;


_root.targety = 150;

_root._xscale = 200;



_root._yscale = 200;


}



et avoir mon déplasement plus mon zoom qui s'effectuent
progressivement... Seulement là j'ai beau chercher j'y arrive
pas....

Vous parler dans différent sujet du forom de SetInterval mais je sais pas comment l'utiliser...



J'espèrais avoir votre aide !

je suis pas vraiment fort pour ce genre de chose je sais pas bien dans quoi je me suis lancé ici...



J'attends avec impatience votre aide!!



A+ rewerner

9 réponses

Messages postés
6
Date d'inscription
jeudi 16 novembre 2000
Statut
Membre
Dernière intervention
23 juin 2005

ca marche merci bcp pour ton aide !
Messages postés
606
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
13 décembre 2006

I = setInterval(fonction, 1000); //appelle la fonction a intervalle regulier (en ms : 1000 -> 1s)



donc il faut que tu fasse ca. Quand tu veu stopper l'execution de ta fonction tu fais un clearInterval(I);
Messages postés
6
Date d'inscription
jeudi 16 novembre 2000
Statut
Membre
Dernière intervention
23 juin 2005

Hum, ok, je vais essayer ca merci bcp !! ^^



rewerner
Messages postés
6
Date d'inscription
jeudi 16 novembre 2000
Statut
Membre
Dernière intervention
23 juin 2005

J'ai encore un
problème, maintenant mon zoom et mon dézoome fonctionnent progressivement, mais
lorsque je décide de zoomer puis ensuite de dézoomer j'ai deux fonction qui
rentre en concurrence..



J'en ai une qui fais rapetisser mon _xscale et l'autre qui le fait
grossir en même temps. Donc si je fait zommer à 250% puis dézoomer pour
retourner à 100% mon
clip se stabilise à qqchose comme 180% entre les deux (c'est pas le
chiffre
exacte).



En ce moment j'ai un clearInterval(I); qui "pause" ma fonction si par
exemple
_xscale passe sous les 100, mais je pense que dès que le paramètre
repasse au dessus la fonction se relance alors que je voudrais qu'elle
ne soit plus active. Ce que je voudrais c'est une commande qui disent
arrêter
la fonction ou clear fonction. Quelque chose de définitif.



J'espère avoir été clair encore une fois....



Merci bcp,

rewerner
Messages postés
606
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
13 décembre 2006

clearInterval est definitif normalement, la fonction ne devrait pas
se relancer apres. Montre le code il doit y avoir une erreur quelque
part
Messages postés
6
Date d'inscription
jeudi 16 novembre 2000
Statut
Membre
Dernière intervention
23 juin 2005

Voila le code que je mets sur mes boutons:

Pour cet exemple le clip grossissant s'appelle "fleche"

Et j'ai aussi un autre bouton avec exactement le même code mais à la place de
250 j'ai mis 100 pour le parametre de l'echelle.

<!--[if !supportLineBreakNewLine]-->

on (release) {

setInterval(scale, 20);

function scale() {

fleche._xscale = fleche._xscale+((250-fleche._xscale)/20);

fleche._yscale = fleche._yscale+((250-fleche._yscale)/20);

}

if (fleche._xscale>240) {

clearInterval();

}

}



... C'est pas le bon code c'est ca hein!?...
Messages postés
606
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
13 décembre 2006

2 erreurs :

1/ il fo mettre le if dans la fonction scale :parce que sinon il peut arreter que si tu rappuie sur le bouton

2/ il faut donner un nom a ton intervalle, parce que clearInterval a besoin de savoir quel intervalle supprimer.



Vala le code corrigé :



on (release) {

I = setInterval(scale, 20);

function scale() {

fleche._xscale = fleche._xscale+((250-fleche._xscale)/20);

fleche._yscale = fleche._yscale+((250-fleche._yscale)/20);

if (fleche._xscale>240) {


clearInterval(I);


}

}



}
Messages postés
606
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
13 décembre 2006

Et il fodrait une sécurité aussi en fait parce que si tu rappuie sur le
bouton la il va te créer un deuxièmme interval et ca va causer
des conflits j suppose (surtout quils auront le meme nom) . Donc j
propose de rajouter un clearInterval au debut comme ca a chaque fois
que tu appuie il arrete le redimensionnement en cours et il en
recommence un nouvo :




on (release) {

clearInterval(I);

I = setInterval(scale, 20);

function scale() {

fleche._xscale = fleche._xscale+((250-fleche._xscale)/20);

fleche._yscale = fleche._yscale+((250-fleche._yscale)/20);

if (fleche._xscale>240) {

clearInterval(I);

}

}



}
Messages postés
6
Date d'inscription
jeudi 16 novembre 2000
Statut
Membre
Dernière intervention
23 juin 2005

merci beaucoup, je vais faire ca tout de suite !!!!



a+ rewerner