Changer la vitesse du Flash

Résolu
mathieu_chagneau Messages postés 3 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 23 août 2007 - 22 août 2007 à 14:32
mathieu_chagneau Messages postés 3 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 23 août 2007 - 23 août 2007 à 10:59
Salut à tous.

J'ai fait une animation en Flash (qui tourne en boucle) qui est à 12 Frames/sec.
ça représente une roue qui tourne (avec pleins de modifs de formes/mouvement à l'intérieur...)

Je souhaite réaliser la chose suivante :
Un curseur, juste à coté de mon animation.
En fonction de la position du curseur, la vitesse grlobale du clip varie.
Je mettrait bien le FLA/SWF, mais comme l'applicaiton sera en stand-alone, elle est très très lourde :-/

Est-ce que vous sauriez comment faire cette petite chose ?
Avec un setinterval ? (c'est ce que j'ai vu sur le site, mais j'arrive pas à "attraper" le principe du code...)

Grosso modo, au final, j'aurais un curseur, et plus il se situe à droite, plus la roue tourne vite.
Faut-il passer par la création d'un clip, puis par un setinterval ou autre?

Je suis bien perdu avec ce problème.

Merci d'avance à tous ceux qui m'apporterons leur précieuse aide :-)

4 réponses

cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
23 août 2007 à 08:31
tu mets un "stop();" sur toutes tes images.

tu crées un setInterval ensuite:

function imageSuivante():Void{
    if(this._currentframe == this._totalframes){
       this.gotoAndStop(1);
    }else{
        this.gotoAndStop(this._currentframe+1);
    }
    _root.millisecondes = this.intervalleMin + (this.curseur._x - this.positionMin) / (this.positionMax-this.positionMin) * (this.intervalleMax-this.intervalleMin)
}

_root.millisecondes = 50; //=> Correspond à 20 ips (j'ai pas voulu calculer pour 12 à 8h du mat)
this.positionMin = 150; // en pixels
this.positionMax = 300; // en pixels
this.intervalleMin = 20; // en millisecondes (attention, en-dessous de 20 il risque d'y avoir des problèmes, en général on descend pas plus bas, ou 10 vraiment au mini minimum)
this.intervalleMax = 100; //en millisecondes

intervalle = setInterval(this, "imageSuivante", _root.millisecondes); 

// L'intervalle est mis à jour dans le setInterval là, suffit de créer un curseur et de remplir les 4 variables que j'ai définies plus haut.

@+! Samy
3
mathieu_chagneau Messages postés 3 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 23 août 2007
23 août 2007 à 08:39
juste une question au passage :

Vu que je me considère encore comme débutant, tu pourrais ajouter quelques bribes de commentaire dans ton code, je m'y pers un poil :arf:
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
23 août 2007 à 09:06
il est commenté. Le setInterval appelle la fonction définie toutes les "_root.millisecondes" et ton curseur fait varier "_root.millisecondes", tiens, j'me demande un truc, le fait de changer _root.millisecondes ne doit plus influencer le setInterval puisqu'il est déjà lancer. Faudrait donc le killer et en relancer un nouveau à chaque passage dans la fonction, genre:

function imageSuivante():Void{
    clearInterval(intervalle);
    if(this._currentframe == this._totalframes){
       this.gotoAndStop(1);
    }else{
        this.gotoAndStop(this._currentframe+1);
    }
   
_root.millisecondes = this.intervalleMin + (this.curseur._x -
this.positionMin) / (this.positionMax-this.positionMin) *
(this.intervalleMax-this.intervalleMin);
    intervalle = setInterval(this, "imageSuivante", _root.millisecondes);
}

_root.millisecondes = 50; //=> Correspond à 20 ips (j'ai pas voulu calculer pour 12 à 8h du mat)
this.positionMin = 150; // en pixels
this.positionMax = 300; // en pixels
this.intervalleMin
= 20; // en millisecondes (attention, en-dessous de 20 il risque d'y
avoir des problèmes, en général on descend pas plus bas, ou 10 vraiment
au mini minimum)
this.intervalleMax = 100; //en millisecondes

intervalle = setInterval(this, "imageSuivante", _root.millisecondes); 

Voilà voilà, sinon copie ça dans le panneau "Actions" et supprime tout mon texte inutile, ce devrait être plus clair.

@+
0
mathieu_chagneau Messages postés 3 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 23 août 2007
23 août 2007 à 10:59
super, merci, je vais tester ça.

Dernière question :
vu que tout est placé sur des calques au niveau principal (interpolation de formes...), est-ce que ça fonctionnerra quand même ?
Ou faut-il que je fasse ça pour chacun des calques créé ?
0
Rejoignez-nous