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 3 Discussion :

Problème avec Variable globale


Sujet :

ActionScript 3

  1. #1
    Nouveau membre du Club
    Problème avec Variable globale
    Bonjour, je suis un novice en as3 et en as également dailleurs.
    J'ai lu ci et la comment déclarer des variables globale Mais voila quand je compile j'ai un message d'erreur : "variable could not be found"

    -------------------------------------------------------------------
    J'ai enregistrer un fichier "testas.as" avec ma classe :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package testas{
     
    public class MyGlobal {
     
    public static var ik:int;
    ik=12;
    }
     
    }

    ----------------------------------------------------------------
    Je voudrais pouvoir récupérer cette variable ik dans tous mes éléments de mon fla principale.

    dans mon fla sur la premiere image :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import flash.display.*;import flash.media.SoundMixer;
    import flash.media.Sound;import flash.media.SoundChannel;
    import flash.events.*; import flash.events.MouseEvent;
    import flash.geom.Rectangle;import flash.net.*;
     
    import testas;
    import testas.MyGlobal;


    et là le message d'erreur : Definition testas:MyGlobal could not be found

    Merci d'avance de m'aider car ne pas arriver une chose qui paraît si facile est navrant.

  2. #2
    Membre confirmé
    En concept objet il existe pas de variable Global, inutile.

    Les variable static ( qui sont une bonne alternative au Global ) signifie que tout les objet de la class auront la meme variable , c'est a dire :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class A{
          public static var nombre:int=0;
    }
    //----:~
    var a = new A();
    var b = new B();
    b.nombre = 10;
    trace(a.nombre); //10
    trace(A.nombre); //10


    Une fonction static permet d'utiliser une fonction de class sans l'instancier exemple : Parser.Parse(xml); ce qui est plutot utile..

    -----

    Ici ton probleme viens des imports :

    On importe que des class. importer permet de créer des objet de la class et manipuler cette derniere.

    import testas; ici tu import un package donc sa sert a rien...

    pour importer toute les class d'un package :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    import mypackage.*;


    import testas.MyGlobal; ici c'est correct , le message d'erreur t'indique qu'il a pas trouvé la class...

    Ceci signifie qu'au dossier racine ( là ou il y a ton fla ) tu dois avoir un dossier "testas" avec dedans ta class et que le dossier ou le fichier de la class n'existe pas.

    Au debut sa parait bizarre l'as3 si tu viens de l'as2 mais quand tu aura bien compris les concept c'est que du bonheur

  3. #3
    Nouveau membre du Club
    Merci de la réponse j'essaie de résoudre mon problème avec tes indications et si ma tête bouillonne je crierais à l'aide

  4. #4
    Nouveau membre du Club
    Bon je n'y arrive toujours pas ...

    voici mon fichier testas.as rangé dans un dossier "testas" au même endroit que le fla.

    -----------testas/testas.as------------------------------

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package {
     
    public class MyGlobal {
     
    public static var ik:int;
     
    }
     
    }


    --------------------------mon fla---------------------------
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    import testas.testas;
    var a = new MyGlobal();
    a.ik=12;


    et maintenant il a l'air de trouver mon .as mais l'erreur change en :

    call to a possibly undefined method MyGlobal.


    Merci de m'aider

  5. #5
    Membre confirmé
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import testas.MyGlobal; //erreur ici <img src="images/smilies/icon_wink.gif" border="0" alt="" title=";)" class="inlineimg" />
     
    var a:MyGlogal = new MyGlobal(); //oublie pas de typer tes variables ! <img src="images/smilies/icon_smile.gif" border="0" alt="" title=":)" class="inlineimg" />
     
    a.ik=12;


    Comme c'est static tu peux meme faire :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    import testas.MyGlobal; //erreur ici <img src="images/smilies/icon_wink.gif" border="0" alt="" title=";)" class="inlineimg" />
     
    MyGlobal.ik = 12;


    Enfin derniere erreur :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //Elle a plus de package ? Il faut donc la mettre a la racine du site... et faire
    //import MyGlobal;
    // ou sinon package testas{
    package { 
     
    public class MyGlobal {
     
    public static var ik:int;
     
    }
     
    }

  6. #6
    Nouveau membre du Club
    Merci de ton aide précieuse mais je suis dans le flou.

    Est-ce que le nom de mon fichier .as est important ? Dois-je le spécifier dans le .fla ?

    sinon re-voici mon testas.as :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package testas{
     
    public class MyGlobal {
     
    public static var ik:int;
     
    }
     
    }



    et mon fla

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    import testas.*;
    var a:MyGlobal = new MyGlobal();
    a.ik=12;


    et là 2 nouvelles erreurs :

    1)Type was not found or was not a compile-time constant:MyGlobal
    2)Call to a possibly undefined method MyGlobal

    Ayez pitié d'un homme qui va bientôt craquer.

  7. #7
    Membre expérimenté
    l'erreur vient juste du nommage de ton fichier qui contient la classe, il doit s'appeller MyGlobal.as
    et doit être placé dans un répertoire testas correspondant au nom du package mais ca tu l'as bien fait
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  8. #8
    Nouveau membre du Club
    C'est bon j'ai réussi j'ai enregistré mon .as en MyGlobal.as dans le dossier testas
    et
    avec comme import :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    import testas.MyGlobal;


    Merci beaucoup pour cet aide

    On peut considérer ce sujet résolu je ne sais pas si c'est à moi de le mettre

  9. #9
    Nouveau membre du Club
    ah j'avais pas vu la réponse qui dit exactement ce que je voulais dire

    merci pour tout.