Diaporama et tween - bug

francescho Messages postés 3 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 31 mai 2010 - 27 mai 2010 à 16:41
francescho Messages postés 3 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 31 mai 2010 - 31 mai 2010 à 17:05
Bonjour à toutes et à tous,

Voilà 2 jours que je me casse la tête pour faire un diaporama (horizontal donc) de plusieurs images successives... Ce diaporama pouvant être contrôlé par des boutons ou défiler automatiquement avec pause sur chaque image. En fait le truc classique qu'on voit un peu partout.
Le but n'étant pas de faire de la pub mais de réutiliser le principe pour mon site perso... Donc ne faites pas attention aux images (des glaces), c'est tout à fait factice.

Ci joint le .fla...
http://www.urluberlu.com/flash/diaporama-test.zip

Je touche au but mais le résultat est instable. Mes boutons fonctionnent correctement, les pauses se font bien (pause de 4 sec. pour chaque image) mais si je clique par exemple de 1 à 3 ensuite la boucle perd les pédales, plus vraiment de pause, les images s'enchainent super rapidement... Comme si il ne prenait plus en compte la fonction pause.
Je pense que ça vient du fait que l'interpolation via la fonction tween n'a pas le temps de terminer lorsqu'on intervient à tel moment.
Je n'ai pas trouvé la solution, si quelqu'un peut m'éclairer, je serais son obligé : )
Merci

5 réponses

piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 mai 2013
28 mai 2010 à 12:43
La solution:

1 seule image et le code suivant (bouton1 devient bouton0 et ainsi de suite):

stop();
th = this;

import mx.transitions.Tween;
import mx.transitions.easing.*;

point_arret = -985;

tabPoints = [0, -985, -1970];

pose = 0;

count = 0;

function Bt(num) {
if (num == count) {
th["bouton"+num].gotoAndStop(5);
} else {
th["bouton"+num].gotoAndStop(1);
}
}

Bt(0);
Bt(1);
Bt(2);

function wait() {
count++;
if (count>2) {
count = 0;
}
Bt(0);
Bt(1);
Bt(2);
point = tabPoints[count];
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 20, false);
}

inter = setInterval(this, "wait", 4000);


bouton0.onRelease = function() {
clearInterval(inter);
pose = 1;
count = 0;
point = tabPoints[count];
Bt(0);
Bt(1);
Bt(2);
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 20, false);
};


bouton1.onRelease = function() {
clearInterval(inter);
pose = 1;
count = 1;
point = tabPoints[count];
Bt(0);
Bt(1);
Bt(2);
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 20, false);
};

bouton2.onRelease = function() {
clearInterval(inter);
pose = 1;
count = 2;
point = tabPoints[count];
Bt(0);
Bt(1);
Bt(2);
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 20, false);
};



Regarde tes messages personnels...

Pi'ère2
0
francescho Messages postés 3 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 31 mai 2010
31 mai 2010 à 16:32
Super ! Merci pour intervention !
Comme je te disais, tout ça marche très bien, c'est absolument stable.
Le diaporama, composé de 3 images, défile automatiquement et lorsqu'on clique sur un des 3 boutons on accède bien ç l'image correspondante.
SAUF que lorsque l'on clique donc, le défilement automatique ne reprend pas. J'ai essayé de "triturer" ton code mais je n'ai toujours pas réussi. Je n'ai pas ton niveau visiblement...
Si jamais tu as un conseil ou une correction à apporter, ce serait vraiment super.

Merci en tout cas, en toute sincérité !

Françu
0
piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 mai 2013
31 mai 2010 à 16:39
Il suffit que tu ajoutes wait(); en fin de code de chaque boutonX.onRelease.

Pi'ère2
0
piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 mai 2013
31 mai 2010 à 16:58
Oups! erreur...

il faut écrire:

bouton0.onRelease = function() {
clearInterval(inter);
pose = 1;
count = 0;
point = tabPoints[count];
Bt(0);
Bt(1);
Bt(2);
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 20, false);
inter = setInterval(th, "wait", 4000);
};



Pi'ère2
0

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

Posez votre question
francescho Messages postés 3 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 31 mai 2010
31 mai 2010 à 17:05
Après plusieurs échanges, voici la correction de Pi'ères2 (si ça peut servir à d'autres)
Le défilement auto reprend bien une fois l'un des 3 boutons cliqué.

Merci infiniment à Pi'ères2 pour son coup de main salutaire !

// Mon site : http://:www.com-u-nic.fr
// Mon tel si besoin : 03 86 33 30 72
//Pierre Pucel alias Pi'ère2

stop();
th = this;

import mx.transitions.Tween;
import mx.transitions.easing.*;

point_arret = -985;

tabPoints = [0, -985, -1970];

pose = 0;

count = 0;

function Bt(num) {
if (num == count) {
th["bouton"+num].gotoAndStop(5);
} else {
th["bouton"+num].gotoAndStop(1);
}
}

Bt(0);
Bt(1);
Bt(2);

function wait() {
count++;
if (count>2) {
count = 0;
}
Bt(0);
Bt(1);
Bt(2);
point = tabPoints[count];
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 40, false);
}

inter = setInterval(this, "wait", 4000);

bouton0.onRelease = function() {
clearInterval(inter);
pose = 1;
count = 0;
point = tabPoints[count];
Bt(0);
Bt(1);
Bt(2);
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 40, false);
inter = setInterval(th, "wait", 4000);
};



bouton1.onRelease = function() {
clearInterval(inter);
pose = 1;
count = 1;
point = tabPoints[count];
Bt(0);
Bt(1);
Bt(2);
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 40, false);
inter = setInterval(th, "wait", 4000);
};

bouton2.onRelease = function() {
clearInterval(inter);
pose = 1;
count = 2;
point = tabPoints[count];
Bt(0);
Bt(1);
Bt(2);
var t:Tween = new Tween(clip, "_x", Strong.easeOut, clip._x, point, 40, false);
inter = setInterval(th, "wait", 4000);
};
0
Rejoignez-nous