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 :

[AS2] Variables au sein d'un onLoad [CS3]


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut [AS2] Variables au sein d'un onLoad
    Bonsoir à tous,

    Je m'adresse à vous car je tourne en rond depuis quelques heures.
    Mon problème est pourtant simple, j'ai un fichier texte "partie.txt", qui contient le texte "secs=180".
    Je récupère cette valeur grâce au code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var duree:Number;
    var lecture:LoadVars = new LoadVars();
    lecture.onLoad = function(success:Boolean){
    	if(success){
    		trace(lecture.secs);
    		duree = lecture.secs;
    		trace(duree);
    	}
    }
    lecture.load("partie.txt");
    trace(duree);
    J'ai donc 3 trace().
    Le premier m'affiche correctement la variable issue du fichier, soit 180.
    Ensuite j'affecte cette même valeur à la variable "duree", que je trace() également, ça fonctionne toujours.
    Une fois sortie de la fonction en revanche, ma variable "duree" vaut undefined lors du 3e trace().
    Les trace() ou affectations (type monChampDynamique.text = lecture.secs) ne fonctionnent qu'à l'intérieur de la fonction.
    Et bien entendu, ce que je veux c'est pouvoir récupérer cette variable "duree" afin de l'utiliser dans le reste de mon programme.

    Je pense qu'il y a quelque chose que j'aborde mal, un truc que j'ai mal compris, et mes recherches ont été infructueuses.
    C'est d'autant plus agaçant que récupérer cette variable représente le point final de mon projet.
    Bref, si quelqu'un a une piste pour moi, j'en serais ravi.
    Merci de m'avoir lu.

  2. #2
    Membre éclairé
    Homme Profil pro
    Concepteur multimédia
    Inscrit en
    Février 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Concepteur multimédia
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 55
    Par défaut
    Salut.

    Alors pour le coup, je crois que c'est une question de timing...

    En effet, lorsque tu fais tes 2 premiers traces, le fichier texte est chargé, et il a récupéré la valeur que tu souhaites... Or, en dehors de cette fonction, donc en dehors du chargement du fichier, tu refais un trace. Le problème c'est qu'il est fort probable qu'au moment du 3ème trace, le fichier texte n'est bel et bien pas encore chargé. Il trace donc une variable undefined.

    Pour compenser le temps que va mettre flash à charger ton fichier, il faudrait que tu lances une fonction qui va mettre en place toute ton anim, mais seulement quand ton fichier texte est effectivement chargé.

    Pour cela, tu peux par exemple modifier ton code comme suit :

    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
    var duree:Number;
    var lecture:LoadVars = new LoadVars();
     
    lecture.onLoad = function(success:Boolean){
    	if(success){
    		trace(lecture.secs);
    		duree = lecture.secs;
    		trace(duree);
    		// Le fichier est chargé, les variables sont récupérées, on lance la suite...
    		chargementOK();
    	}
    }
     
    function chargementOK() {
    	trace(duree);
    	// Le reste de ton code, de tes appels de fonction va ici...
    }
     
    lecture.load("partie.txt");

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut
    Merci de ton aide, en effet l'erreur était bien là.
    Le pire c'est que mon trace() undefined était placé avant les 2 autres dans la fenêtre de sortie, ça aurait du me mettre la puce à l'oreille.
    Merci encore, je respire à nouveau.

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

Discussions similaires

  1. matrice variable au sein d'une formule.
    Par romainnut dans le forum Excel
    Réponses: 6
    Dernier message: 13/07/2009, 20h43
  2. [RegEx] problème variable au sein d'une boucle for
    Par mussara dans le forum Langage
    Réponses: 4
    Dernier message: 22/06/2006, 14h26
  3. [AS2] Variable numerique bornée
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 23/08/2005, 17h14
  4. [AS2] Variable number limité
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 7
    Dernier message: 26/07/2005, 16h37
  5. [AS2] Variables globales
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 30/06/2005, 14h46

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