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 :

onLoad et la boucle for


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut onLoad et la boucle for
    Bonjour à tous.
    J'ai un problème dans mon script. Les clips logo1, logo2... logo12 sont bien crées dans le clip LOGOS (confirmé par le débogueur). Ils s'affichent correctement mais la fonction LOGO.onLoad ne répond pas (confirmé par le débogueur). Cette fonction devrait s'exécuter à chaque itération de la boucle, c'est à dire pour les clips logo1, logo2... logo12. Je pense qu'il y a un problème avec la boucle for qui s'exécute entièrement avant que la fonction LOGO.onLoad soit exécutée. J'ai mis en rouge la partie qui coince... Ce qu'il y a après n'est pas important. Si quelqu'un a une réponse, merci de m'aider.
    Voici le script :

    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
    var liste:LoadVars = new LoadVars();
    liste.load("liste.txt");
     
    // Script exécuté lorsque la variable liste est chargée
    liste.onLoad = function() {
        _root.createEmptyMovieClip("LOGOS",1);
        for(var n=1;liste["nom"+n]; n++) {
            var LOGO = _root.LOGOS.createEmptyMovieClip("logo"+n,n);
            LOGO.loadMovie("im_logos/"+liste["nom"+n]);
            LOGO._x = 100*n;
            trace(liste["nom"+n]);
     
            // Script exécuté lorsque l'objet LOGO est chargé
            LOGO.onLoad = function() {
                if((LOGO.getBytesTotal() > 0) && (LOGO.getBytesLoaded() >= LOGO.getBytesTotal())) { trace(LOGO.getBytesTotal()); }
                trace(LOGO.getBytesTotal());
     
                // Script exécuté lorsque la souris passe sur l'objet imgObj
                LOGO.onRollOver = function() {
     
                    // Script exécuté en boucle à chaque nouvelle frame
                    this.onEnterFrame = function() {
                        if(this._alpha > 40) {
                            this._alpha -= 30;
                            this._width += 15;
                        } else {
                            delete onEnterFrame;
                            this.onEnterFrame = function() {
                                if(this._alpha < 100) {
                                    this._alpha += 10;
                                    this._width -= 5;
                                } else {
                                    delete this.onEnterFrame;
                                }
                            }
                        }
                    }
                }
            }
        }
        factor = (_parent._width-978) / 978;
    }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 37
    Par défaut
    LOGO.onLoad le fonctionnera pas pour un load movie.

    tu as la reponse dans ton script. le seul moyen de controler le chargement d'un clip c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((LOGO.getBytesTotal() > 0) && (LOGO.getBytesLoaded() >= LOGO.getBytesTotal())) { trace(LOGO.getBytesTotal()); }
    il suffit juste de boucler cette ligne avec setinterval

    oublie le onload.

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut Toujours pas...
    Merci uowis.
    Effectivement le onLoad a l'air de poser problème ici. Mais si je ne mets rien, la valeur de LOGO.getBytesTotal est égale à 0 car le clip n'est pas encore chargé au moment où j'évalue sa valeur. Je ne peux donc pas travailler sur ce clip. J'ai aussi essayé LOGO.onEnterFrame afin d'effectuer des actions sur LOGO lorsque LOGO.getBytesLoaded == LOGO.getBytesTotal , mais ça ne marche pas mieux... La boucle for est exécutée dans sa totalité et ensuite l'événement LOGO.onEnterFrame est exécutée à son tour.
    Vraiment, je bug.

  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
    Bonjour,

    pour gérer le chargement d'un clip il vaut mieux utiliser MovieClipLoader et l'évènement onLoadInit.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 37
    Par défaut
    J'apprends des trucs en même temps

    donc oui je confirme ne fais pas un setinterval pour controler l'avancement du chargement de clip.

    Un onLoadInit est bien mieux. Recherche dans l'aide (F1) il y des bons exemples.


    Merci beekeep

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Par défaut
    Je ne suis pas expert en actionscript et j'ai du mal à saisir la différence.
    En tout cas, dans mon script, MovieClipLoader et l'évènement onLoadInit provoquent le même effet... Le script passe directement à l'itération suivante et n'attend pas que onLoadInit soit vérifié. Je ne peux toujours pas travailler sur mon objet LOGO. J'ai l'impression que c'est ma boucle for qui foire tout.
    Je ne peux pas abandonner comme ça... Je sais que la solution est en vous. Vous avez l'air drôlement experts.

    PS. C'est un script pour lire des images jpg, png et gif dans un dossier externe. Ces images sont affichées dans l'animation flash.

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

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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