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

ActionScript 1 & ActionScript 2 Discussion :

probleme avec boucle "for"


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut probleme avec boucle "for"
    Bonjour a tous

    suite a ce tutoriel " http://www.zoneflash.net/tutoriaux/t040.php "
    je decide d'ameliorer mon animation en rajoutant 2 clip que j'appele "guide1" et "guide2" chaqun contenant un autre clip nommé "point"
    et donc pour animé le tous g decidé de rajouter la boucle for

    donc voici le code d'origine:

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    vitesse = 5;
    distanceMin = 10;
     
    initialiser = function () {
    clearInterval(intervalle);
    this.createEmptyMovieClip("trajectoire", 0);
    trajectoire._x = guide._x;
    trajectoire._y = guide._y;
    trajectoire.clear();
    trajectoire.lineStyle(3, "0xFFFFFF", 100);
    guide.gotoAndStop(1);
    oldx = guide.point._x;
    oldy = guide.point._y;
    trajectoire.moveTo(oldx, oldy);
    guide.point._visible = false;
    intervalle = setInterval(nextImage, vitesse);
    };
     
    nextImage = function () {
    guide.nextFrame();
    if (guide._currentframe == guide._totalframes) {clearInterval(intervalle);
    } else {
    var newx = guide.point._x;
    var newy = guide.point._y;
    var dx = newx-oldx;
    var dy = newy-oldy;
    var d = Math.sqrt(dx*dx+dy*dy);
    if (d>distanceMin) {
    trajectoire.moveTo(newx, newy);
    } else {
    trajectoire.lineTo(newx, newy);
    }
    oldx = newx;
    oldy = newy;
    }
    };
     
    initialiser();
     
    playAgain.onPress = function() {
    initialiser();
    };

    et voici le mien apres avoir rajouter les boucle et fait quelque correction ,malhersemnt rien ne s'affiche (je pense que le pb pourrais venir du ciblage)

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    vitesse = 5;
    distanceMin = 10;
     
    initialiser = function () {
    	for (i=1; i<3; i++) {
    clearInterval(intervalle);
    this.createEmptyMovieClip("trajectoire", 0);
    trajectoire._x = this["guide"+i]._x;
    trajectoire._y = this["guide"+i]._y;
    trajectoire.clear();
    trajectoire.lineStyle(3, "0xFFFFFF", 100);
    this["guide"+i].gotoAndStop(1);
    oldx = this["guide"+i].point._x;
    oldy = this["guide"+i].point._y;
    trajectoire.moveTo(oldx, oldy);
    this["guide"+i].point._visible = false;
    intervalle = setInterval(nextImage, vitesse);
    };
     
    nextImage = function () {
    guide.nextFrame();
    if (this["guide"+i]._currentframe == this["guide"+i]._totalframes) {clearInterval(intervalle);
    } else {
    var newx = this["guide"+i].point._x;
    var newy = this["guide"+i].point._y;
    var dx = newx-oldx;
    var dy = newy-oldy;
    var d = Math.sqrt(dx*dx+dy*dy);
    if (d>distanceMin) {
    trajectoire.moveTo(newx, newy);
    } else {
    trajectoire.lineTo(newx, newy);
    }
    oldx = newx;
    oldy = newy;
    }
    };
    }
    initialiser();
     
    playAgain.onPress = function() {
    initialiser();
    };
    je vous serai reconnaissent de l'aide que voux pourrez m'apporter
    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Salut et bienvennue sur dvp

    j'ai remarqué plusieurs erreurs dans ton code.

    1- l'accolade fermante de ta boucle for est au mauvais endroit

    2- tu utilise this["guide"+i] au lieu de guide pour en gérer plusieurs,
    mais il reste un guide.nextFrame(); dans le code.

    3- tu lances 3 fois le même interval.

    voila pour les pistes, n'hésite pas si tu rencontre des difficultés pour resoudre ces problèmes.

  3. #3
    Membre averti Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    Citation Envoyé par beekeep Voir le message
    Salut et bienvennue sur dvp

    j'ai remarqué plusieurs erreurs dans ton code.

    1- l'accolade fermante de ta boucle for est au mauvais endroit

    2- tu utilise this["guide"+i] au lieu de guide pour en gérer plusieurs,
    mais il reste un guide.nextFrame(); dans le code.

    3- tu lances 3 fois le même interval.

    voila pour les pistes, n'hésite pas si tu rencontre des difficultés pour resoudre ces problèmes.

    Salut beekeep et merci pour ton aide
    g fait comme tu ma dis malhersement rien ne s'affiche
    (je n'ai pas compris au sujet de l'interval dont tu parle)
    voici ce que j'ai fait

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    vitesse = 5;
    distanceMin = 10;
     
    initialiser = function () {
    	for (i=1; i<3; i++) {
    clearInterval(intervalle);
    this.createEmptyMovieClip("trajectoire", 0);
    trajectoire._x = this["guide"+i]._x;
    trajectoire._y = this["guide"+i]._y;
    trajectoire.clear();
    trajectoire.lineStyle(3, "0xFFFFFF", 100);
    this["guide"+i].gotoAndStop(1);
    oldx = this["guide"+i].point._x;
    oldy = this["guide"+i].point._y;
    trajectoire.moveTo(oldx, oldy);
    this["guide"+i].point._visible = false;
    intervalle = setInterval(nextImage, vitesse);
    	}
    };
     
    nextImage = function () {
    	for (i=1; i<3; i++) {
    this["guide"+i].nextFrame();
    if (this["guide"+i]._currentframe == this["guide"+i]._totalframes) {clearInterval(intervalle);
    } else {
    var newx = this["guide"+i].point._x;
    var newy = this["guide"+i].point._y;
    var dx = newx-oldx;
    var dy = newy-oldy;
    var d = Math.sqrt(dx*dx+dy*dy);
    if (d>distanceMin) {
    trajectoire.moveTo(newx, newy);
    } else {
    trajectoire.lineTo(newx, newy);
    }
    oldx = newx;
    oldy = newy;
    }
    };
    }
    initialiser();
     
    playAgain.onPress = function() {
    initialiser();
    };

    je met le fla se sera peut etre plus clair (mes explications etant approximative ...)
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    il me semble bien que tu as inversé la fin de la fonction nextImage et la fin de la boucle for dans cette même fonction.


    Citation Envoyé par kentaro
    je n'ai pas compris au sujet de l'interval dont tu parle
    c'est par rapport à ces lignes de codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clearInterval(intervalle);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    intervalle = setInterval(nextImage, vitesse);
    c'est ce qui permet d'executer la fonction toutes les n milisecondes,
    mais je suis pas sur que ce soit bien géré.

    je regarderai un peu plus tard (busy)

  5. #5
    Membre averti Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    Citation Envoyé par beekeep Voir le message
    il me semble bien que tu as inversé la fin de la fonction nextImage et la fin de la boucle for dans cette même fonction.




    c'est par rapport à ces lignes de codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clearInterval(intervalle);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    intervalle = setInterval(nextImage, vitesse);
    c'est ce qui permet d'executer la fonction toutes les n milisecondes,
    mais je suis pas sur que ce soit bien géré.

    je regarderai un peu plus tard (busy)
    concernant les intervalles je ne les ai pas modifier du tuto original (mon 1er poste) est cela fonctione parfaitement ,c'est des que g rajouter les boucles que sa commence a fair caca,
    pour ma part je pense que sa vient de ce genre de ciblage:
    oldx = this["guide"+i].point._x;
    "point" etant un clip (a l'interieur de guide) est comme qu'il y en a plusieur sa doit etre a cause de sa que sa foire.

    en tous cas merci beekeep

  6. #6
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Citation Envoyé par kentaro Voir le message
    pour ma part je pense que sa vient de ce genre de ciblage:
    oldx = this["guide"+i].point._x;
    "point" etant un clip (a l'interieur de guide) est comme qu'il y en a plusieur sa doit etre a cause de sa que sa foire.
    ce point ne pose pas de problème.

    par contre, pour ce qui est de la création et du nettoyage de l'intervalle,
    il ne faut pas les laisser dans la boucle mais juste avant et après celle-ci.

    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
    initialiser = function () {
    clearInterval(intervalle);
    for (i=1; i<3; i++) {
      this.createEmptyMovieClip("trajectoire", 0);
      trajectoire._x = this["guide"+i]._x;
      trajectoire._y = this["guide"+i]._y;
      trajectoire.clear();
      trajectoire.lineStyle(3, "0xFFFFFF", 100);
      this["guide"+i].gotoAndStop(1);
      oldx = this["guide"+i].point._x;
      oldy = this["guide"+i].point._y;
      trajectoire.moveTo(oldx, oldy);
      this["guide"+i].point._visible = false;
     }
    intervalle = setInterval(nextImage, vitesse);
    };
    ensuite dans la fonction nextImage il ne faut pas nettoyer l'intervalle si seulement un des guide est sur sa dernière frame mais seulement si tout les guides sont sur leur dernière frame.
    ce qui donne :
    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
    nextImage = function ()
    {
        var bAllGuidsFinished:Boolean = true;
        for (i=1; i<3; i++)
        {
            this["guide"+i].nextFrame();
            if (this["guide"+i]._currentframe != this["guide"+i]._totalframes)
            {
                bAllGuidsFinished = false;
            }else{
                var newx = this["guide"+i].point._x;
                var newy = this["guide"+i].point._y;
                var dx = newx-oldx;
                var dy = newy-oldy;
                var d = Math.sqrt(dx*dx+dy*dy);
                if (d>distanceMin) {
                trajectoire.moveTo(newx, newy);
                } else {
                trajectoire.lineTo(newx, newy);
                }
                oldx = newx;
                oldy = newy;
        }
         if(bAllGuidsFinished)
            clearInterval(intervalle);
    
    };
    et ça devrai fonctionner

    au passage j'ai vu que ton fichier Flash est en CS3,
    vérifie bien que tu est en AS2 et non en AS3.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PERL]probleme avec boucle For
    Par snufx dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 13/02/2009, 22h20
  2. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16

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