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 :

Classe MovieClip - accès attributs


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 137
    Par défaut Classe MovieClip - accès attributs
    Bonjour à tous,
    J'explique un peu le sujet car c'est pas évident en quelques mots
    Donc, j'ai un MovieClip avec des sous-MovieClips.
    Ensuite j'ai une classe qui est liée à ce MovieClip avec d'autres attributs.
    L'instanciation se passe très bien et les clips instances s'affichent sans problème.
    Par contre, pour accéder aux clips enfants, il faut (a priori) déclarer des attributs dans la classe qui portent le même nom que les sous-clips de mon movieClip de base, et là où le bât blesse, c'est que certains clips sont déclarés et manipulés "dynamiquement", c'est-à-dire à partir d'un tableau et de ce type de code :
    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
     
    for(var i in _global.modeles_array)
    {
    	mannequin1[_global.modeles_array[i]+"_skin"].zone1._visible = false;
    	mannequin1[_global.modeles_array[i]+"_tight"].zone1._visible = false;
    	mannequin1[_global.modeles_array[i]+"_loose"].zone1._visible = false;
    	mannequin1[_global.modeles_array[i]+"_skin"].zone2._visible = false;
    	mannequin1[_global.modeles_array[i]+"_tight"].zone2._visible = false;
    	mannequin1[_global.modeles_array[i]+"_loose"].zone2._visible = false;
    	mannequin1[_global.modeles_array[i]+"_skin"].zone3._visible = false;
    	mannequin1[_global.modeles_array[i]+"_tight"].zone3._visible = false;
    	mannequin1[_global.modeles_array[i]+"_loose"].zone3._visible = false;
    	mannequin1[_global.modeles_array[i]+"_skin"].zone4._visible = false;
    	mannequin1[_global.modeles_array[i]+"_tight"].zone4._visible = false;
    	mannequin1[_global.modeles_array[i]+"_loose"].zone4._visible = false;
    }
    La grande question, finalement, c'est :
    "est-il possible d'accéder aux clips enfants du MovieClip/classe dans une instance de cette dernière sans les déclarer un par un en attribut de la classe ?" (ceci pour contourner le problème que j'ai avec mes déclarations dynamiques avec des boucles FOR !)
    Si vous n'avez pas compris la question, n'hésitez pas à demander des précisions ^^

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Par défaut
    Bonsoir,

    j'ai peut être pas forcement trop comprit mais pour accéder à un clip parent en général il faut utiliser la propriété qui existe nativement dans ton clipMovie : "_parent"

    Par exemple si tu a un clip "toto" composé d'un sous clip "tutu" et bien si tu fait tutu._parent tu aura la référence de ton ClipMovie "toto".

    Sinon dans ta boucle de création de tes ClipMovie dynamique tu peux toujours rajouter une propriété racine qui fait référence au clip parent :
    exemple : mannequin1[_global.modeles_array[i]+"_skin"].racine = this;


    Voila, j'espère que cela va te permettre d'avancer un peu.
    Tiens moi au courant si j'ai rien compris à ta demande.

  3. #3
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 137
    Par défaut
    Tout d'abord merci d'avoir pris le temps de me répondre
    En fait, quand tu lies une classe AS avec un MovieClip, tu peux facilement accéder aux attributs de la classe AS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Truc extends MovieClip
    {
    public var variable;
    }
     
    monTruc = new Truc();
    trace(monTruc.variable);
    Mais pour accéder à un sous clip du MovieClip lié, il faut aussi déclaré ce sous clip en tant qu'attribut de la classe.
    Et là où j'ai un problème c'est que certains sous clips ne sont pas déclarés avec des noms "en dur" mais avec un nom créé à partir de valeurs d'un tableau (celui où j'ai tous mes noms de modèles en fait).
    J'ai essayé de faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for(var i in _global.modeles_array)
    {
    	private var mannequin1[_global.modeles_array[i]+"_skin"].zone1;
    	private var mannequin1[_global.modeles_array[i]+"_tight"].zone1;
    	.
    	.
    	.
    	etc
    }
    mais bien entendu ça ne marche pas !
    Peut-être que le coup du parent peut m'aider, mais dans ce cas je ne comprends pas bien comment :/
    D'ailleur, moi j'ai plutôt besoin d'accéder aux clips enfants.

    Si tu as une idée, merci pour le coup de main

  4. #4
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Par défaut
    Bonsoir,

    juste une petite question :

    Quand exécute tu ta boucle d'après ta variable globale ?
    Dans le constructeur de ta classe ?

    Éventuellement donne moi ton code AS avec ton fla.

  5. #5
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 137
    Par défaut
    En fait non, la boucle pour l'instant est dans les déclarations d'attributs de la classe.
    Je poste le code, ce sera peut être plus clair

    Voici la classe "classTenue" :

    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
     
    class classTenue extends MovieClip
    {
    	/*************/
    	/* Attributs */
    	/*************/
     
    	// init variables par défaut
    	private var col:String;
    	private var coupe:String;
    	private var ragmon:String;
    	private var manche:String;
    	private var vetement:String;
    	private var modele:String;
    	private var short:String;
    	private var chaussettes:String;
     
    	// couleurs maillot
    	private var couleur_zone_1:String;
    	private var couleur_zone_2:String;
    	private var couleur_zone_3:String;
    	private var couleur_zone_4:String;
     
    	// couleurs col
    	private var couleur_col_zone_1:String;
    	private var couleur_col_zone_2:String;
     
    	// couleurs short
    	private var couleur_short_zone_1:String;
    	private var couleur_short_zone_2:String;
    	private var couleur_short_zone_3:String;
    	private var couleur_short_zone_4:String;
     
    	// couleurs chaussettes
    	private var couleur_chaussettes_zone_1:String;
    	private var couleur_chaussettes_zone_2:String;
     
    	// couleur des bords côte
    	private var couleur_bc:String;
     
    	// attributs contenu dans le clip d'origine
    	private var mask_skinmonteecourte:MovieClip;
    	private var mask_skinraglancourte:MovieClip;
    	private var mask_skinraglanlongue:MovieClip;
    	private var mask_skinmonteelongue:MovieClip;
    	private var mask_tightraglancourte:MovieClip;
    	private var mask_tightmonteecourte:MovieClip;
    	private var mask_tightraglanlongue:MovieClip;
    	private var mask_tightmonteelongue:MovieClip;
    	private var mask_looseraglancourte:MovieClip;
    	private var mask_loosemonteecourte:MovieClip;
    	private var mask_looseraglanlongue:MovieClip;
    	private var mask_loosemonteelongue:MovieClip;
     
    	private var mask_short_skinmonteecourte:MovieClip;
    	private var mask_short_skinraglancourte:MovieClip;
    	private var mask_short_skinraglanlongue:MovieClip;
    	private var mask_short_skinmonteelongue:MovieClip;
    	private var mask_short_tightraglancourte:MovieClip;
    	private var mask_short_tightmonteecourte:MovieClip;
    	private var mask_short_tightraglanlongue:MovieClip;
    	private var mask_short_tightmonteelongue:MovieClip;
    	private var mask_short_looseraglancourte:MovieClip;
    	private var mask_short_loosemonteecourte:MovieClip;
    	private var mask_short_looseraglanlongue:MovieClip;
    	private var mask_short_loosemonteelongue:MovieClip;
     
    	private var mask_col_skin:MovieClip;
    	private var mask_col_elite:MovieClip;
    	private var mask_col_mao:MovieClip;
    	private var mask_col_classic:MovieClip;
     
    	private var mask_chaussettes_skinmonteecourte:MovieClip;
    	private var mask_chaussettes_skinraglancourte:MovieClip;
    	private var mask_chaussettes_skinraglanlongue:MovieClip;
    	private var mask_chaussettes_skinmonteelongue:MovieClip;
    	private var mask_chaussettes_tightraglancourte:MovieClip;
    	private var mask_chaussettes_tightmonteecourte:MovieClip;
    	private var mask_chaussettes_tightraglanlongue:MovieClip;
    	private var mask_chaussettes_tightmonteelongue:MovieClip;
    	private var mask_chaussettes_looseraglancourte:MovieClip;
    	private var mask_chaussettes_loosemonteecourte:MovieClip;
    	private var mask_chaussettes_looseraglanlongue:MovieClip;
    	private var mask_chaussettes_loosemonteelongue:MovieClip;
     
    	private var mask_bc_skinmontee:MovieClip;
    	private var mask_bc_skinraglan:MovieClip;
    	private var mask_bc_tightmontee:MovieClip;
    	private var mask_bc_tightraglan:MovieClip;
    	private var mask_bc_loosemontee:MovieClip;
    	private var mask_bc_looseraglan:MovieClip;
     
    	private var bc_couleurs:MovieClip;
     
    	private var col_classic:MovieClip;
    	private var col_mao:MovieClip;
    	private var col_elite_1:MovieClip;
    	private var col_elite_2:MovieClip;
    	private var col_skin_1:MovieClip;
    	private var col_skin_2:MovieClip;
     
    	private var colskin1:MovieClip;
    	private var colclassic1:MovieClip;
    	private var colmao1:MovieClip;
    	private var colelite1:MovieClip;
     
    	private var postureskin1:MovieClip;
    	private var skinmonteecourte1:MovieClip;
    	private var skinmonteelongue1:MovieClip;
    	private var skinraglanlongue1:MovieClip;
    	private var skinraglancourte1:MovieClip;
     
    	private var posturetight1:MovieClip;
    	private var tightmonteecourte1:MovieClip;
    	private var tightmonteelongue1:MovieClip;
    	private var tightraglanlongue1:MovieClip;
    	private var tightraglancourte1:MovieClip;
     
    	private var postureloose1:MovieClip;
    	private var loosemonteecourte1:MovieClip;
    	private var loosemonteelongue1:MovieClip;
    	private var looseraglanlongue1:MovieClip;
    	private var looseraglancourte1:MovieClip;
     
    	/************/
    	/* Méthodes */
    	/************/
     
    	// constructeur
    	public function classTenue()
    	{
    		this.col = _global.col;
    		this.coupe = _global.coupe;
    		this.ragmon = _global.ragmon;
    		this.manche = _global.manche;
    		this.vetement = _global.vetement;
    		this.modele = _global.modele;
    		this.short = _global.short;
    		this.chaussettes = _global.chaussettes;
     
    		this.couleur_zone_1 = _global.couleur_zone_1;
    		this.couleur_zone_2 = _global.couleur_zone_2;
    		this.couleur_zone_3 = _global.couleur_zone_3;
    		this.couleur_zone_4 = _global.couleur_zone_4;
     
    		this.couleur_col_zone_1 = _global.couleur_col_zone_1;
    		this.couleur_col_zone_2 = _global.couleur_col_zone_2;
     
    		this.couleur_short_zone_1 = _global.couleur_short_zone_1;
    		this.couleur_short_zone_2 = _global.couleur_short_zone_2;
    		this.couleur_short_zone_3 = _global.couleur_short_zone_3;
    		this.couleur_short_zone_4 = _global.couleur_short_zone_4;
     
    		this.couleur_chaussettes_zone_1 = _global.couleur_chaussettes_zone_1;
    		this.couleur_chaussettes_zone_2 = _global.couleur_chaussettes_zone_2;
     
    		this.couleur_bc = _global.couleur_bc;
    	}
    }
    Je n'ai pas remis les accesseurs set et get qui ne servent pas pour mon problème.
    Les déclarations des sous clips du clip d'origine sont à partir du commentaire "// attributs contenu dans le clip d'origine".
    Ici, je n'ai pas les fameuses boucles qui me permettraient de déclarer mes modèles de maillots et de shorts, car justement c'est ce que je chercher à faire !

    Le code du fla est tout bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var man1:classTenue = this.attachMovie("Man","man1",this.getNextHighestDepth());
    man1._x = 20;
    man1._y = 100;
    J'espère que ça éclaircit le sujet
    Merci

Discussions similaires

  1. comment trier les instances d'une classe selon un attribut choisi
    Par rddev dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/05/2007, 00h01
  2. [Debutant] Classe d'acces aux données
    Par Keldrhyn dans le forum Access
    Réponses: 4
    Dernier message: 18/02/2007, 20h30
  3. [C#] Classe C# et attribut Browsable fonction d'une option
    Par ILoveCSharp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/06/2006, 01h13
  4. Réponses: 4
    Dernier message: 22/03/2006, 15h42
  5. Réponses: 4
    Dernier message: 13/07/2005, 14h56

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