Deplacement et zoom lors d'un clique [Résolu]

rewerner 6 Messages postés jeudi 16 novembre 2000Date d'inscription 23 juin 2005 Dernière intervention - 21 juin 2005 à 00:10 - Dernière réponse : rewerner 6 Messages postés jeudi 16 novembre 2000Date d'inscription 23 juin 2005 Dernière intervention
- 23 juin 2005 à 09:29
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
Afficher la suite 

9 réponses

Répondre au sujet
rewerner 6 Messages postés jeudi 16 novembre 2000Date d'inscription 23 juin 2005 Dernière intervention - 23 juin 2005 à 09:29
+3
Utile
ca marche merci bcp pour ton aide !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de rewerner
John_Doe_88 606 Messages postés samedi 12 juin 2004Date d'inscription 13 décembre 2006 Dernière intervention - 21 juin 2005 à 09:35
0
Utile
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);
Commenter la réponse de John_Doe_88
rewerner 6 Messages postés jeudi 16 novembre 2000Date d'inscription 23 juin 2005 Dernière intervention - 21 juin 2005 à 10:17
0
Utile
Hum, ok, je vais essayer ca merci bcp !! ^^



rewerner
Commenter la réponse de rewerner
rewerner 6 Messages postés jeudi 16 novembre 2000Date d'inscription 23 juin 2005 Dernière intervention - 21 juin 2005 à 19:31
0
Utile
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
Commenter la réponse de rewerner
John_Doe_88 606 Messages postés samedi 12 juin 2004Date d'inscription 13 décembre 2006 Dernière intervention - 22 juin 2005 à 08:28
0
Utile
clearInterval est definitif normalement, la fonction ne devrait pas
se relancer apres. Montre le code il doit y avoir une erreur quelque
part
Commenter la réponse de John_Doe_88
rewerner 6 Messages postés jeudi 16 novembre 2000Date d'inscription 23 juin 2005 Dernière intervention - 22 juin 2005 à 10:46
0
Utile
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!?...
Commenter la réponse de rewerner
John_Doe_88 606 Messages postés samedi 12 juin 2004Date d'inscription 13 décembre 2006 Dernière intervention - 22 juin 2005 à 15:11
0
Utile
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);


}

}



}
Commenter la réponse de John_Doe_88
John_Doe_88 606 Messages postés samedi 12 juin 2004Date d'inscription 13 décembre 2006 Dernière intervention - 22 juin 2005 à 15:19
0
Utile
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);

}

}



}
Commenter la réponse de John_Doe_88
rewerner 6 Messages postés jeudi 16 novembre 2000Date d'inscription 23 juin 2005 Dernière intervention - 22 juin 2005 à 17:33
0
Utile
merci beaucoup, je vais faire ca tout de suite !!!!



a+ rewerner
Commenter la réponse de rewerner

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.