IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

[FLASH 8] [XML] Probleme de setInterval


Sujet :

Flash

  1. #1
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut [FLASH 8] [XML] Probleme de setInterval
    Bonjour.
    J'ai un petit souci avec cette fonction.
    Je voudrais que toutes les 5sec le code m'affiche un nouvelle item de mon xml.
    Mais il reste bloqué sur le premier, est ce que quelqun voit pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    tickers_xml = new XML();
    tickers_xml.ignoreWhite = true;
    tickers_xml.onLoad = function(ok) {
    	if (ok) {
    		noeuds = tickers_xml.firstChild.childNodes;
    		// on se positionne au second niveau
    		nbrtickers = noeuds.length;
    		// on récupère le nombre de noeuds à ce niveau
    		premiereticker = this.firstChild.firstChild;
    		// on sélectionne le premier noeud
    		derniereticker = this.firstChild.lastChild;
    		// on sélectionne le dernier noeud
    		enCours = premiereticker;
    		// enCours correspond au noeud en cours d'affichage
    		// ici, la premiere ticker sera donc la premiere affichée
    		afficheticker(enCours);
    		// on affiche la ticker du premier noeud
    	}
    };
    tickers_xml.load("...");
     
    // affichage de la ticker
    function afficheticker(ticker) {
    	loadMovie(ticker.attributes.image, ecran);
    	textes = ticker.attributes.titre + " : " + ticker.attributes.soustitre;
    	if (enCours.attributes.num == nbrtickers) {
    		enCours = premiereticker;
    	} else {
    		enCours = enCours.nextSibling;
    	}
    	var timer = setInterval("afficheticker(enCours)", 5000);
    }
    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de Gnomothir
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 234
    Par défaut
    As tu essaye de mettre ce code hors de ta fonction?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var timer = setInterval("afficheticker(enCours)", 5000);

  3. #3
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    Oui j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var timer = setInterval("afficheticker(enCours)", 5000);
    a la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // ici, la premiere ticker sera donc la premiere affichée
    		afficheticker(enCours);
    Mais rien ne s'affiche, c'est pour ca que j'ai un doute sur la cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var timer = setInterval("afficheticker(enCours)", 5000);

  4. #4
    Membre expérimenté Avatar de Gnomothir
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 234
    Par défaut
    essaie sans mettre les " " sur le nom de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var timer = setInterval(afficheticker(enCours), 5000);

  5. #5
    Expert confirmé

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Salut,

    essaie plutôt un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    var nbrtickers :Number;
    var currentTicker:Number = 0;
    var noeuds:XMLNode;
    var timer:Number;
     
    var tickers_xml:XML = new XML();
    tickers_xml.ignoreWhite = true;
    tickers_xml.onLoad = function(ok:Boolean) {
    	if (ok) {
    		noeuds = tickers_xml.firstChild.childNodes;
    		// on se positionne au second niveau
    		nbrtickers = noeuds.length;
                    timer = setInterval("afficheticker", 5000);
    	}
    };
    tickers_xml.load("http://newepita.3ie.org/admin/ticker.php");
     
    // affichage de la ticker
    function afficheticker() {
            var ticker:XMLNode = noeuds.childNodes[currentTicker];
            currentTicker++;
    	loadMovie(ticker.attributes.image, ecran);
    	if(currentTicker == nbrtickers ) {
                  clearInterval(timer);
            }
    }

  6. #6
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    j'ai reussi avec ma methode en remplacant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var timer = setInterval("afficheticker(enCours)", 5000);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setInterval(afficheticker, 5000, enCours);
    Mais certain truc ne vont pas.

    freegreg est ce que tu peux m'expliquer ton script stp ? me dire ce qu'il est censé faire ? Merci

  7. #7
    Expert confirmé

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Citation Envoyé par Phenomenium
    freegreg est ce que tu peux m'expliquer ton script stp ? me dire ce qu'il est censé faire ? Merci
    La même chose , enfin je crois

    En fait, la différence c'est que toi tu passes le prochain noeud en argument. Moi je me base sur le l'index du prochain noeud à afficher.
    Le clearInterval c'est juste éviter que la fonction continue à boucler alors que tous les noeuds ont été affiché.

  8. #8
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    En fait, la différence c'est que toi tu passes le prochain noeud en argument. Moi je me base sur le l'index du prochain noeud à afficher.
    Le clearInterval c'est juste éviter que la fonction continue à boucler alors que tous les noeuds ont été affiché.
    Ok.
    J'ai testé mais a priori y'a un truc qui cloche puisqu'il ne m'affiche rien
    En outre le fait que tourne en boucle ne me derange pas, donc je pense que je peux retirer le clearInterval(timer); sans tout péter !?

  9. #9
    Expert confirmé

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Oui tu peux virer le clearinterval même si, si tu n'en as plus besoin, c'est tjs préférable de la virer
    Je pense que mon erreur vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ticker:XMLNode = noeuds.childNodes[currentTicker];
    Remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ticker:XMLNode = noeuds[currentTicker];
    Si tu veux tester ma proposition

    Après cela doit débuter après 5 sec.
    si tu veux que ca débute de suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    tickers_xml.onLoad = function(ok:Boolean) {
    	if (ok) {
    		noeuds = tickers_xml.firstChild.childNodes;
    		// on se positionne au second niveau
    		nbrtickers = noeuds.length;
                    afficheticker();
                    timer = setInterval("afficheticker", 5000);
    	}
    };
    ...
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    ...
    tickers_xml.onLoad = function(ok:Boolean) {
    	if (ok) {
    		noeuds = tickers_xml.firstChild.childNodes;
    		// on se positionne au second niveau
    		nbrtickers = noeuds.length;
                    afficheticker();
    	}
    };
    ...
     
    function afficheticker() {
            if(currentticker == 0) { 
                 timer = setInterval("afficheticker", 5000);
            }
            var ticker:XMLNode = noeuds[currentTicker];
            currentTicker++;
    	loadMovie(ticker.attributes.image, ecran);
    	if(currentTicker == nbrtickers ) {
                  clearInterval(timer);
            }
    }

  10. #10
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    Snuf ca m'as l'air nikel tout ca, mais il m'affiche toujours rien
    Voila ma version actuelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    var nbrtickers:Number;
    var currentTicker:Number = 0;
    var noeuds:XMLNode;
    var timer:Number;
     
    var tickers_xml:XML = new XML();
    tickers_xml.ignoreWhite = true;
    tickers_xml.onLoad = function(ok:Boolean) {
    	if (ok) {
    		noeuds = tickers_xml.firstChild.childNodes;
    		// on se positionne au second niveau
    		nbrtickers = noeuds.length;
                    afficheticker();
    	}
    };
     
    tickers_xml.load("...");
     
    // affichage de la ticker
    function afficheticker() {
            if(currentticker == 0) { 
                 timer = setInterval("afficheticker", 5000);
            }
            var ticker:XMLNode = noeuds[currentTicker];
            currentTicker++;
    	loadMovie(ticker.attributes.image, ecran);
    	if(currentTicker == nbrtickers ) {
                  clearInterval(timer);
            }
    }
    Je test plein de truc mais rien à faire.
    Oh grand chef ! Eclair moi !

  11. #11
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    Apres quelques test il savere que le programme ne rentre pas dans le
    Si ca peu aider...

    Cette ligne m'intrigue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tickers_xml.onLoad = function(ok:Boolean)

  12. #12
    Expert confirmé

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Correction du code (testé cette fois ci sur un autre poste donc pas de copier/coller )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    var nbrtickers:Number;
    var currentTicker:Number = 0;
    var noeuds:XMLNode;
    var timer:Number;
    var self:Object = this;
     
    var tickers_xml:XML = new XML();
    tickers_xml.ignoreWhite = true;
    tickers_xml.onLoad = function(ok:Boolean) {
    	if (ok) {
    		noeuds = this.firstChild;
    		// on se positionne au second niveau
    		nbrtickers = noeuds.childNodes.length;
                    self.afficheticker();
    	}
    };
     
    tickers_xml.load("...");
     
    // affichage de la ticker
    function afficheticker() {
            if(currentticker == 0) { 
                 timer = setInterval(afficheticker, 5000);
            }
            var ticker:XMLNode = noeuds.childNodes[currentTicker];
            currentTicker++;
    	loadMovie(ticker.attributes.image, ecran);
    	if(currentTicker == nbrtickers ) {
                  clearInterval(timer);
            }
    }

  13. #13
    Expert confirmé

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Citation Envoyé par Phenomenium
    Apres quelques test il savere que le programme ne rentre pas dans le
    Si ca peu aider...

    Cette ligne m'intrigue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tickers_xml.onLoad = function(ok:Boolean)
    Non c'est la bonne syntaxe
    Par contre, es-tu sûr de l'url fournie au load ?

  14. #14
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    Bon ba j'ai du rater un truc !
    Fonctionne toujours pas chez moi
    Snuf

  15. #15
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    Par contre, es-tu sûr de l'url fournie au load ?
    Oui sur et certain puisqu'avec mon script de depart ca marchait.

  16. #16
    Expert confirmé

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Teste avec ca.
    J'ai remplacé le loadLMovie par un trace
    Fichiers attachés Fichiers attachés

  17. #17
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    Ah ca fonctionne de cette maniere.
    mais qu'est ce qui cloche avec le load ? A priori il ne trouve par le symbol "ecran"
    Jai essaye avec mon et ca marche aussi

    EDIT :

    Je vais reprendre le fichier que tu m'as envoyé et travailler sur celui la il marche nikel merci de ton aide precieuse


  18. #18
    Expert confirmé

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Avant ton loadMovie, fais un
    Qu'est-ce que cela te renvoie ?

  19. #19
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    Avant ton loadMovie, fais un
    Code :

    trace(ecran._target);

    Qu'est-ce que cela te renvoie ?
    Ca me renvoi un undifined ... Interessant !

    EDIT : J'ai rajouté "ecran" dans les parametres du clip et maintenant il m'affiche /ecran avec trace(ecran._target);

    Mais il ne m'affiche toujours pas les images

    EDIT : AH c'est bon j'ai reussi probleme de nom de mon clip. Merci

    Par contre j'ai essayé de virer le clearInterval mais ca bug grave. Je vais continuer a chercher

    EDIT : C'est bon j'ai reussi a faire tourner le truc en boucle !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    var nbrtickers:Number;
    var currentTicker:Number = 0;
    var noeuds:XMLNode;
    var timer:Number;
    var self:Object = this;
    var tickers_xml:XML = new XML();
    tickers_xml.ignoreWhite = true;
    tickers_xml.onLoad = function(ok:Boolean) {
    	if(ok) {
    		noeuds = tickers_xml.firstChild;
    		nbrtickers = noeuds.childNodes.length;
    		self.afficherticker();
    	}
    }
     
    tickers_xml.load("...");
     
    function afficherticker() {
    	if(currentTicker == 0) {
    		timer = setInterval(afficherticker, 5000);
    	}
    	var ticker:XMLNode = noeuds.childNodes[currentTicker];
    	currentTicker++;
    	loadMovie(ticker.attributes.image, image);
    	texte = ticker.attributes.titre;
    	soustitre = ticker.attributes.soustitre;
    	if(currentTicker == nbrtickers) {
    		currentTicker = 0;
    	}
    }
    Par contre plus le truc tourne, plus ca mouline, les images sont en decallages, la machine rame ...

  20. #20
    Membre confirmé Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Par défaut
    Si je veux ajouter des effets sur le elements de xml qui sont affiché, par exemple interpolation de mouvement, je suis bloqué avec cette methode non ?

Discussions similaires

  1. probleme menu dans flash via xml
    Par boxter1313 dans le forum Flash
    Réponses: 3
    Dernier message: 17/03/2010, 09h22
  2. [Flash 8 + XML]Probleme de Cache : SWF + XML
    Par SNDP dans le forum Flash
    Réponses: 2
    Dernier message: 29/05/2007, 08h31
  3. flash+xml probleme de connexion
    Par toomail dans le forum Flash
    Réponses: 4
    Dernier message: 03/04/2007, 13h58
  4. Réponses: 14
    Dernier message: 13/03/2007, 19h33
  5. [flash MX] probleme avec setinterval et clearinterval
    Par yacinechaouche dans le forum Flash
    Réponses: 3
    Dernier message: 15/04/2004, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo