Accueil > Forum > > > > setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(
setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(
lundi 5 avril 2010 à 23:32:07 |
setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(

BBFUNK01
|
Bonsoir tout le monde,
je suis en train d'arriver au bout de la réalisation de mon diaporama perso, et il me reste un point à terminer : le mode "SlideShow" qui permet, en appuyant sur play, d'afficher les images les unes après les autres toutes les x secondes.
J'utilise donc un "setInterval" pour gérer cela, problème : mon setInterval ne lance l'affichage que d'une seule image, et les autres images ne suivent pas.
J'ai regardé du côté de la doc et je ne vois pas réellement où peut être mon erreur.
Voici mon code :
Code ActionScript : function SlideShow(){
removeMovieClip("monClip");
var clip:MovieClip = this._root.attachMovie("IDrebours","rebours",getNextHighestDepth()+1,{_x:904.9,_y:626.8});
var clip:MovieClip = this._root.attachMovie("IDmonClip","monClip",getNextHighestDepth()+1,{_x:600,_y:328.5});
function loadBitmapSmoothed(url:String, cible:MovieClip) {
var bmc:MovieClip = cible.createEmptyMovieClip("bmc", cible.getNextHighestDepth());
var listener:Object = new Object();
listener.tmc = cible;
listener.onLoadProgress = function(mc:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void{
var pourcentage:Number = bytesLoaded/bytesTotal*100;
if(pourcentage<100){
_root.clipRoue._visible = true;
}
if(pourcentage == 100){
_root.clipRoue._visible = false;
Wash.start();
new Tween(monClip, "_alpha", Elastic.easeOut, 0, 100, 20, true);
mx.transitions.TransitionManager.start(monClip, {type:mx.transitions.Squeeze, direction:mx.transitions.Transition.IN, duration:1, easing:mx.transitions.easing.Bounce.easeOut});
}
}
listener.onLoadInit = function(mc:MovieClip){
mc._visible = false;
_root.monClip.clip2._x = _root.monClip.clip2._x-mc._width/2;
_root.monClip.clip2._y = _root.monClip.clip2._y-mc._height/2;
ZoomCalcul = new Array();
zoomTaux.text = "";
bitmap.dispose();
bitmap = new BitmapData(mc._width, mc._height, true);
this.tmc.attachBitmap(bitmap, this.tmc.getNextHighestDepth(),"auto",true);
bitmap.draw(mc);
}
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(listener);
loader.loadClip(url, bmc);
}
if(Pos == visuels_noms.length){
Pos = -1;
loadBitmapSmoothed(folder + visuels_noms[i, Pos+1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos+1];
Pos = Pos+1;
}else if(Pos !== visuels_noms.length){
loadBitmapSmoothed(folder + visuels_noms[i, Pos+1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos+1];
Pos = Pos+1;
}
if(rebours.compteur.text == 0){
removeMovieClip("rebours");
}
}
clipMenu.btn_play.onRelease = function(){
Diap = setInterval(SlideShow(), 6000);
}
clipMenu.btn_pause.onRelease = function(){
clearInterval(Diap);
removeMovieClip("rebours");
}
Si vous avez des suggestions je suis preneur :)
Merci,
BBFUNK01
|
|
mardi 6 avril 2010 à 14:19:10 |
Re : setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(

Orange73
|
Hello,
Code ActionScript :
Diap = setInterval(SlideShow, 6000);
A+
-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
|
|
mardi 6 avril 2010 à 21:54:04 |
Re : setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(

BBFUNK01
|
Salut Orange73, merci pour ta réponse : effectivement ça fonctionne ainsi :
Code ActionScript : Diap = setInterval(SlideShow, 6000);
le seule souci c'est que les images ne se loadent pas, probablement parce qu'il faut que je réinitialise les variables des positions dans le xml, donc j'y travaille.
Sinonn si jamais t'as une idée pour ce problème-ci (problème bizarre d'ailleurs...);
j'ai également dans mon diaporama des commandes "précédent" et "suivant", pour gérer la boucle lorsque par exemple on clique sur "précédent" et que l'on est sur la 1ère image du xml, j'indique donc qu'il faut passer à la dernière image stockée dans le xml, comme ceci :
Code ActionScript : clipMenu.btn_prec.onRelease = function(){
clearInterval(Diap);
removeMovieClip("rebours");
removeMovieClip("contact");
removeMovieClip("informations");
clipMenu.btn_play._visible = true;
clipMenu.btn_play.enabled = true;
clipMenu.btn_pause._visible = false;
clipMenu.btn_pause.enabled = false;
if(Pos == 0){
Pos = visuels_noms.length;
}
removeMovieClip("monClip");
var clip:MovieClip = this._root.attachMovie("IDmonClip","monClip",getNextHighestDepth()+1,{_x:600,_y:328.5});
function loadBitmapSmoothed(url:String, cible:MovieClip) {
var bmc:MovieClip = cible.createEmptyMovieClip("bmc", cible.getNextHighestDepth());
var listener:Object = new Object();
listener.tmc = cible;
listener.onLoadProgress = function(mc:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void{
var pourcentage:Number = bytesLoaded/bytesTotal*100;
if(pourcentage<100){
_root.clipRoue._visible = true;
}
if(pourcentage == 100){
_root.clipRoue._visible = false;
Wash.start();
new Tween(monClip, "_alpha", Elastic.easeOut, 0, 100, 20, true);
mx.transitions.TransitionManager.start(monClip, {type:mx.transitions.Squeeze, direction:mx.transitions.Transition.IN, duration:1, easing:mx.transitions.easing.Bounce.easeOut});
}
}
listener.onLoadInit = function(mc:MovieClip){
mc._visible = false;
_root.monClip.clip2._x = _root.monClip.clip2._x-mc._width/2;
_root.monClip.clip2._y = _root.monClip.clip2._y-mc._height/2;
ZoomCalcul = new Array();
zoomTaux.text = "";
bitmap.dispose();
bitmap = new BitmapData(mc._width, mc._height, true);
this.tmc.attachBitmap(bitmap, this.tmc.getNextHighestDepth(),"auto",true);
bitmap.draw(mc);
}
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(listener);
loader.loadClip(url, bmc);
}
loadBitmapSmoothed(folder + visuels_noms[i, Pos-1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos-1];
Pos = Pos-1;
}
... et ça marche nickel :)
J'ai donc fait l'inverse sur le bouton "suivant" :
Code ActionScript : clipMenu.btn_suiv.onRelease = function(){
clearInterval(Diap);
removeMovieClip("rebours");
removeMovieClip("contact");
removeMovieClip("informations");
clipMenu.btn_play._visible = true;
clipMenu.btn_play.enabled = true;
clipMenu.btn_pause._visible = false;
clipMenu.btn_pause.enabled = false;
removeMovieClip("monClip");
var clip:MovieClip = this._root.attachMovie("IDmonClip","monClip",getNextHighestDepth()+1,{_x:600,_y:328.5});
function loadBitmapSmoothed(url:String, cible:MovieClip) {
var bmc:MovieClip = cible.createEmptyMovieClip("bmc", cible.getNextHighestDepth());
var listener:Object = new Object();
listener.tmc = cible;
listener.onLoadProgress = function(mc:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void{
var pourcentage:Number = bytesLoaded/bytesTotal*100;
if(pourcentage<100){
_root.clipRoue._visible = true;
}
if(pourcentage == 100){
_root.clipRoue._visible = false;
Wash.start();
new Tween(monClip, "_alpha", Elastic.easeOut, 0, 100, 20, true);
mx.transitions.TransitionManager.start(monClip, {type:mx.transitions.Squeeze, direction:mx.transitions.Transition.IN, duration:1, easing:mx.transitions.easing.Bounce.easeOut});
}
}
listener.onLoadInit = function(mc:MovieClip){
mc._visible = false;
_root.monClip.clip2._x = _root.monClip.clip2._x-mc._width/2;
_root.monClip.clip2._y = _root.monClip.clip2._y-mc._height/2;
ZoomCalcul = new Array();
zoomTaux.text = "";
bitmap.dispose();
bitmap = new BitmapData(mc._width, mc._height, true);
this.tmc.attachBitmap(bitmap, this.tmc.getNextHighestDepth(),"auto",true);
bitmap.draw(mc);
}
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(listener);
loader.loadClip(url, bmc);
}
if(Pos == visuels_noms.length){
Pos = -1;
loadBitmapSmoothed(folder + visuels_noms[i, Pos+1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos+1];
trace(Pos);
Pos = Pos+1;
trace(Pos);
}else if(Pos !== visuels_noms.length){
loadBitmapSmoothed(folder + visuels_noms[i, Pos+1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos+1];
Pos = Pos+1;
trace(Pos);
}
}
... là ça marche aussi, seulement lorsque l'on est sur la dernière image stockée dans le xml et que l'on clique sur le bouton, cela me met "undefined", et si on clique encore une fois, et bien c'est bon ça affiche la 1ère image stockée dans le xml, pourtant je réintialise bien la position dans mon xml :
Code ActionScript : if(Pos == visuels_noms.length){
Pos = -1;
loadBitmapSmoothed(folder + visuels_noms[i, Pos+1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos+1];
trace(Pos);
Pos = Pos+1;
trace(Pos);
}
Je mets "Pos = -1" car dans la fonction je loade "Pos+1", donc 0, donc la 1ère donnée de mon Array, bref bizarre tout ça.
Bon en tout cas ça se précise et j'espère avoir terminé bientôt.
Merci,
BBFUNK01
|
|
mardi 6 avril 2010 à 22:45:35 |
Re : setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(

BBFUNK01
|
Je viens de trouver pour mon bouton "suivant", en fait il faut enlever 1 à la longueur du tableau (normal finalement vu que le tableau commence à 0 :) ):
Code ActionScript : if(Pos == visuels_noms.length-1){
Pos = -1;
loadBitmapSmoothed(folder + visuels_noms[i, Pos+1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos+1];
trace(Pos);
Pos = Pos+1;
trace(Pos);
}
comme ça ça marche.
Pour mon setInterval en tout cas ma fonction LoadBitmapSmoothed() ne fonctionne pas :(, je n'ai que le texte dynamique qui est chargé suivant le xml, mais pas les images.
BBFUNK01
|
|
mardi 6 avril 2010 à 23:25:40 |
Re : setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(

BBFUNK01
|
Bon et bien voici ma conclusion :
- quand je mets sur mon bouton "play" :
Code ActionScript : Diap = setInterval(SlideShow, 6000);
ça me lance un seul intervalle (donc une seule image).
- quand je mets sur mon bouton "play":
Code ActionScript : Diap = setInterval(SlideShow(), 6000);
ça me lance bien ma fonction SlideShow() en boucle, mais il n'y a que mon champ de texte dynamique qui affiche les noms de mes images, mes images ne sont pas loadées.
Bref, ça me laisse pantois tout ça :0
BBFUNK01
|
|
mardi 6 avril 2010 à 23:27:40 |
Re : setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(

BBFUNK01
|
...euh...
j'ai inversé les fonctions et leurs résultats :) :
Code ActionScript : Diap = setInterval(SlideShow(), 6000);
ne me lance qu'un intervalle.
BBFUNK01
|
|
mercredi 7 avril 2010 à 23:56:26 |
Re : setInterval() pour diaporama qui ne lance l'action qu'une seule fois :(

BBFUNK01
|
Réponse acceptée !
Hello,
bon et bien après avoir testé tout et n'importe quoi dans tous les sens j'ai enfin réussi à faire fonctionner le mode "SlideShow", je serai incapable d'expliquer pourquoi ça marche de cette manière car en fait j'ai dispatché le contenu initial de ma fonction "SlideShow()" en 2 autres fonctions que j'ai ensuite réintégré dans la fonction "SlideShow()"... il y a certainement une explication (...logique?), mais j'ai la flemme de la chercher :). En tout cas ça marche :
Code ActionScript : function Diaporama(){
function loadBitmapSmoothed(url:String, cible:MovieClip){
var bmc:MovieClip = cible.createEmptyMovieClip("bmc", cible.getNextHighestDepth());
trace("bmc");
var listener:Object = new Object();
trace("listener");
listener.tmc = cible;
listener.onLoadProgress = function(mc:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void{
var pourcentage:Number = bytesLoaded/bytesTotal*100;
if(pourcentage<100){
_root.clipRoue._visible = true;
}
if(pourcentage == 100){
trace("chargement");
_root.clipRoue._visible = false;
Wash.start();
new Tween(monClip, "_alpha", Elastic.easeOut, 0, 100, 20, true);
mx.transitions.TransitionManager.start(monClip, {type:mx.transitions.Squeeze, direction:mx.transitions.Transition.IN, duration:1, easing:mx.transitions.easing.Bounce.easeOut});
}
}
listener.onLoadInit = function(mc:MovieClip){
trace("init");
mc._visible = false;
_root.monClip.clip2._x = _root.monClip.clip2._x-mc._width/2;
_root.monClip.clip2._y = _root.monClip.clip2._y-mc._height/2;
ZoomCalcul = new Array();
zoomTaux.text = "";
bitmap.dispose();
bitmap = new BitmapData(mc._width, mc._height, true);
this.tmc.attachBitmap(bitmap, this.tmc.getNextHighestDepth(),"auto",true);
bitmap.draw(mc);
trace("draw");
}
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(listener);
loader.loadClip(url, bmc);
}
if(Pos == visuels_noms.length-1){
Pos = -1;
loadBitmapSmoothed(folder + visuels_noms[i, Pos+1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos+1];
trace(Pos);
Pos = Pos+1;
trace(Pos);
}else if(Pos !== visuels_noms.length){
loadBitmapSmoothed(folder + visuels_noms[i, Pos+1], monClip.clip2);
clipMenu.designation.text = visuels_titres[i, Pos+1];
Pos = Pos+1;
trace(Pos);
}
}
function SlideShow(){
Nettoyer();
Diaporama();
}
clipMenu.btn_play.onRelease = function(){
Diap = setInterval(SlideShow, 6000);
clipMenu.btn_pause._visible = true;
clipMenu.btn_pause.enabled = true;
clipMenu.btn_play._visible = false;
clipMenu.btn_play.enabled = false;
}
BBFUNK01
|
|
Cette discussion est classée dans : function, mc, root, monclip, pos
Répondre à ce message
Sujets en rapport avec ce message
On prend les même et on recommence [ par Soapza ]
Voilà un autre problème un peu plus dur que celui d'hier mais du même acabit :stop();_root.accueilgeneral_mc.contact_mca.contact_bout.onRelease = func
Local Connection + Mouselistener [ par nuclearprout ]
Bonjour, ce que je souhaite faire est complexe mais d'une complexitude, mortelle !J'ai deux anims ;La première contient un clip "mc-zone" qui quand il
Problèm pour appliquer des actions sur des clips dupliqués avec attachMovie [ par converse ]
Bonjour à tous,J'ai besoin de créer un slider (plusieurs images miniatures qui défilent à droite ou à gauche selon la position de la souris),J'ai
bug sur fondu movie clip [ par missopium ]
bonsoirvoila mon souci j ai un bug sur un menu que je suis en train de concevoirau passage de la souris sur mes logos l intitulé s affiche en fondu (r
deplacement tween [ par gobgob74 ]
Bonjourj'ai des probleme avec les tween, mon clip melange les diferrents coordonnees des mouvement alors Comment uiliser la class tween pour creer de
Dessinez dans une certaine zone [ par panicq ]
Bonjour à tous,Je suis en train de faire une petite application de dessin et j'aimerai savoir comment faire pour que les lignes ne sortent pas d'un mo
Damier avec une boucle [ par sliverman ]
Bonjour à tous, Je suis en train de m'entrainer un peu mais la je bloque, je fais tout en actionscript 2.0, donc je fait this.createEmptyMovieClip("mo
2 fonctions sur un bouton [ par 1800toutanne ]
Bonjour a tous,J'ai une petite question concernant 2 fonctions que j aurai aimé faire fonctionner en même temps sur le onrelease de mes boutons..J'ai
fonction qui fait ramer ma machine [ par mikouRoux ]
Salut à tous,Merci beaucoup pour votre aide ces dernier jours. Sans vous je ne serais jamais parvenu à faire mon petit programme.A présent, tout comme
URGENT : problème de lecture d'un swf loadé [ par kbeaba ]
Bonjour,J'appelle un swf externe par le biais d'un conteneur vide (monClip_mc) en demandant à une petite animation de loadi (loading) d'être visible p
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|