Diaporama et tween - bug

Signaler
Messages postés
3
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
31 mai 2010
-
Messages postés
3
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
31 mai 2010
-
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

Messages postés
235
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
26 mai 2013

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
Messages postés
3
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
31 mai 2010

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
Messages postés
235
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
26 mai 2013

Il suffit que tu ajoutes wait(); en fin de code de chaque boutonX.onRelease.

Pi'ère2
Messages postés
235
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
26 mai 2013

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
Messages postés
3
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
31 mai 2010

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);
};