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 d'acces a une variable public


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 56
    Points : 38
    Points
    38
    Par défaut Probleme d'acces a une variable public
    Bonjour,

    Depuis quelque temps je m'interesse a flash.
    pour cela j'utilise pour le moment des outils libres type MTASC , e-anim

    donc j'ai reussi a creer une petite class sans trop de soucis

    afin de pouvoir utiliser certaine variable de ma class , elle sont public

    mais la je recontre un probleme

    j'ai une variable public sel_obj

    mon probleme je cree un MovieClip , avec un fonction onPress
    or le probleme et que la fonction onPress et du type static, et que les fonctions static ne peuvent utilise et ou modifier des variables ou fonction public

    il y a t'il un moyen de contourne le probleme ??

    ou alors je dois modifier ma class entierement en static ?
    mais dans ce cas comment conserver mes variables public ...

    bon je suis pas un expert en actionScript, je compte sur votre comprehension ....
    Un peu touche a tous

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    bonjour,

    Tu pourrais coller le code intérésé ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    class classe.Boite_sel {
     
    // declaration public
     
        public var ob_visible : Number = 8;    // nombre de ligne visible
        public var largeur    : Number = 100;  // largeur par defaut de la boite de selection
        public var obj_sel    : Number = -1;   // objet en cours selectionner
        public var pos_x      : Number = 0;    // position en x de la boite
        public var pos_y      : Number = 0;    // position en y de la boite
     
     
        public var coul_fond  : Number = 0xE0E0E0; // couleur de fond de la boite
        public var coul_sel   : Number = 0x808080; // couleur de l'objet selectionne
     
    // declaration prive
     
        private var liste_obj   : Array = new Array(); // liste des objets
        private var cell_height : Number;              // hauteur d'une cellule
        private var base        : MovieClip;           // la base de la boite
        private var masque      : MovieClip;           // le masque de la boite
        private var set_obj_sel : Function;
        private var get_obj_sel : Function;
     
        static var rtest:Number;
     
    // fonction public qui redessine la boite
     
        public function re_dessine() {
            masque.clear();
            base.clear();
            masque.lineStyle(1,0xFFFFFF);
            masque.moveTo(pos_x-1,pos_y-1);
            masque.beginFill(0xFFFFFF);
            masque.lineTo(pos_x+largeur+1,pos_y-1);
            masque.lineTo(pos_x+largeur+1,pos_y+cell_height*ob_visible+1);
            masque.lineTo(pos_x-1,pos_y+cell_height*ob_visible+1);
            masque.endFill();
     
            base.lineStyle(1,0x000000);
            base.moveTo(pos_x,pos_y);
            base.beginFill(coul_fond);
            base.lineTo(pos_x+largeur,pos_y);
            base.lineTo(pos_x+largeur,pos_y+cell_height*ob_visible);
            base.lineTo(pos_x,pos_y+cell_height*ob_visible);
            base.endFill();
     
            for (var i=0;i<liste_obj.length;i++) {
                if (base["valeur"+i]==undefined) {
                    base.createEmptyMovieClip("valeur"+i,base.getNextHighestDepth());
                    base["valeur"+i].createTextField("obj",base.getNextHighestDepth(),pos_x+1,pos_y+i*cell_height,
                        largeur-1,cell_height);
                    base["valeur"+i].obj.selectable=false;
     
     
                    base["valeur"+i].onPress = function() {
                        var nom:String = this["valeur"+i]._name;
                        var pos:String = nom.substr(6,nom.length-7);
                        Boite_sel.re_dessine();
                        }
                }
                base["valeur"+i].obj.text=liste_obj[i];
                base["valeur"+i].obj._x=pos_x+1;
                base["valeur"+i].obj._y=pos_y+i*cell_height;
                if (i==obj_sel) {
                    base["valeur"+i].obj.backgroundColor=coul_sel;
                    base["valeur"+i].obj.background=true;
                }
     
            }
        }
     
    // le constructeur de la boite
        public function Boite_sel(dest:MovieClip) {
            liste_obj.push("ligne 1");
            liste_obj.push("ligne 2");
            var dim_txt : Array = new Array();
            dim_txt= Commune.Taille_txt("Pg testing");
            cell_height=dim_txt[1];
            if (base==undefined) {
                base = dest.createEmptyMovieClip("base",dest.getNextHighestDepth());
                masque = dest.createEmptyMovieClip("masque",dest.getNextHighestDepth());
                base.setMask(masque);
            }
     
            re_dessine();
    // les fonctions de mise a jour automatique de couleur/position... de la boite
            var m_pos_x :Function = function(prop,oldVal,newVal) {
                this.pos_x=newVal;
                this.re_dessine();
                return newVal;
            }
            this.watch("pos_x",m_pos_x);
     
            var m_pos_y :Function = function(prop,oldVal,newVal) {
                this.pos_y=newVal;
                this.re_dessine();
                return newVal;
            }
            this.watch("pos_y",m_pos_y);
     
            var m_coul_fond:Function = function(prop,oldVal,newVal) {
                this.coul_fond=newVal;
                this.re_dessine();
                return newVal;
            }
            this.watch("coul_fond",m_coul_fond);
     
            var m_coul_sel:Function = function(prop,oldVal,newVal) {
                this.coul_sel=newVal;
                //this.re_dessine();
                return newVal;
            }
            this.watch("coul_sel",m_coul_sel);
       }
     
    }
    c'est cette partie la qui pose probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                    base["valeur"+i].onPress = function() {
                        var nom:String = this["valeur"+i]._name;
                        var pos:String = nom.substr(6,nom.length-7);
                        Boite_sel.re_dessine();
                        }
    avec MTASC j'ai l'erreur suivante
    type error classe.Boite_sel has no static field re_dessine
    merci de votre patience
    Un peu touche a tous

  4. #4
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bojour

    je ne comprend pas pourquoi avoir mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Boite_sel.re_dessine();
    Ne voulais tu pas plutot ecrire :
    Autre chose,
    Pourquoi ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            var m_pos_x :Function = function(prop,oldVal,newVal) {
                this.pos_x=newVal;
                this.re_dessine();
                return newVal;
            }
            this.watch("pos_x",m_pos_x);
    Quand tu peu écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function set posX(num:Number):Void
    {
      this.pos_x=newVal;
      this.re_dessine();
    }
    PS: envoi tout le code si probleme encore ( static main(){} etc .. )

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    j'ai fait une correction dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    base["valeur"+i].onPress = function() {
    var nom:String = this["valeur"+i]._name;
    var pos:String = nom.substr(6,nom.length-7);
    Boite_sel.re_dessine();
    }
    j'ai change this["valeur"+i]._name; par this.name;
    et nom.substr(6,nom.length-7); par nom.substr(6,nom.length-6);

    erreur de saisie !!
    bon ca c'est une chose ...

    Citation Envoyé par CR_Gio
    Bojour

    je ne comprend pas pourquoi avoir mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Boite_sel.re_dessine();
    Ne voulais tu pas plutot ecrire :
    a quel niveau ??
    ca si c'est dans ma fonction qui me pose soucis , si je remplace Boite_sel par this on sera sur l'objet base["valeur"+i] et nom pas l'objet class Boite_sel ? ce que cherche justement a modifier une propriete, ou je fais fausse route ??

    Citation Envoyé par CR_Gio
    Autre chose,
    Pourquoi ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            var m_pos_x :Function = function(prop,oldVal,newVal) {
                this.pos_x=newVal;
                this.re_dessine();
                return newVal;
            }
            this.watch("pos_x",m_pos_x);
    Quand tu peu écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function set posX(num:Number):Void
    {
      this.pos_x=newVal;
      this.re_dessine();
    }
    pour cela c'est vrai que je sers d'un exemple d'un wiki , pour ajouter un ecouteur sur une variable

    peut etre que l'utilisation que j'en fais est peut etre pas correct !!

    autrement la source ici , est totalement autonome c'est une class personnalise pour palier le manque d'un TlistBox (allusion au Pascal)


    Mais dans le fond , mon probleme et que je peux toujours depuis la fonction onPress d'un MovieClip modifier une variable public de la ma class boite_sel


    PS:Je suis encore debutant en flash , et surtout je travail pas avec des logiciels commerciaux, la programmation etant pour moi surtout un plaisir que j'essaie de partarger avec d'autre passionne ...

    Encore merci de ta patience
    Un peu touche a tous

  6. #6
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Pour palier a la premier erreur, j'ai fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            var myClassInstance:BoiteSel=this;
    
            for (var i=0;i<liste_obj.length;i++)
            {
                     //[...]
                    base["valeur"+i].onPress = function()
                    {
                        var nom:String = this["valeur"+i]._name;
                        var pos:String = nom.substr(6,nom.length-7);
                        myClassInstance.re_dessine();
                      }
                     //[...]
            }
    J'ai donc crée une nouvelle variable myClassInstance qui contien une reference de mon instance de la class boite_sel ce qui permet d'avoir acces a re_dessine()

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    je vais tester ca , je vous tiens au courant ..

    merci
    Un peu touche a tous

  8. #8
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Je me suis penché un peu plus sur ta source et .... a mon avis tu va avoir encore pas mal de probleme :p

    Il y a un probleme au niveau du beginfilld qui cache les textes,

    Au niveau du for(var i=0;....) MTASC ne m'a pas pris en compte; il a fallu declarrer la variable i en dehors de la boucle for.

    Et meme en générale, la stucture de ta class est un peu compliqué je trouve ...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par CR_Gio
    Je me suis penché un peu plus sur ta source et .... a mon avis tu va avoir encore pas mal de probleme :p

    Il y a un probleme au niveau du beginfilld qui cache les textes,

    Au niveau du for(var i=0;....) MTASC ne m'a pas pris en compte; il a fallu declarrer la variable i en dehors de la boucle for.

    Et meme en générale, la stucture de ta class est un peu compliqué je trouve ...
    j'ai pas eu d'erreur !
    c'est vrai que for(var i:Number=0;....) serais quand meme mieux !!!

    bon ca marche !!!
    j'ai corrige aussi une bricole dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
              if (i==obj_sel) {
                    base["valeur"+i].obj.backgroundColor=coul_sel;
                    base["valeur"+i].obj.background=true;
                }
    c'est devenu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
              if (i==obj_sel) {
                    base["valeur"+i].obj.backgroundColor=coul_sel;
                    base["valeur"+i].obj.background=true;
                } else {
    base["valeur"+i].obj.background=false;
    }
    Merci ca MARCHE !!!

    bon autrement , c'est quoi tu trouve de lourd/compliquer ?? dans ma class ??

    peut etre une maniere peu etre peu orthodoxe ??
    c'est fort possible !!!
    j'ai du contourne d'autre probleme pour arrive a mes fins , mais la solution et peut etre pas la meilleur !!

    Encore mille merci pour ta patience
    Un peu touche a tous

  10. #10
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    			this.mc_BoiteSel.base["valeur"+i].onPress = function()
    			{
    				myClass.obj_sel.obj.background=false;
     
    				this.obj.backgroundColor=0x00FF00;
    				this.obj.background=true;
     
    				myClass.obj_sel=this;
    			}
    Tu pourai mettre un exemple en ligne ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par CR_Gio
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                this.mc_BoiteSel.base["valeur"+i].onPress = function()
                {
                    myClass.obj_sel.obj.background=false;
     
                    this.obj.backgroundColor=0x00FF00;
                    this.obj.background=true;
     
                    myClass.obj_sel=this;
                }
    Tu pourai mettre un exemple en ligne ?
    j'ai encore du mal avec ce this , c'est pas encore automatique !!

    voila le resultat : http://c.diot.free.fr/dvp/
    clicque sur oui !!
    la boite de dialogue je l'ai aussi realiser avec MATSC
    Un peu touche a tous

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

Discussions similaires

  1. [AC-2002] Probleme avec l acces a une variable Long Integer
    Par sanaline dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/03/2013, 16h42
  2. Probleme d'acces a une variable.
    Par starkson dans le forum Delphi
    Réponses: 1
    Dernier message: 29/06/2006, 18h00
  3. [Debutant] Probleme d'acces a une variable
    Par Bugmaster dans le forum Langage
    Réponses: 16
    Dernier message: 02/09/2004, 15h57
  4. probleme d'acces a une machine sur un réseau
    Par zorian dans le forum Développement
    Réponses: 3
    Dernier message: 09/06/2004, 13h04
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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