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

Flash Discussion :

[FLASH 8] onPress dans des movieClip dynamiques (variables dans une boucle for) [Sources]


Sujet :

Flash

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 85
    Points
    85
    Par défaut [FLASH 8] onPress dans des movieClip dynamiques (variables dans une boucle for)
    Bonjour à tous et toutes,

    Voici ma deuxième demande d'aide sur ce forum...

    Voilà je suis en train de faire un player video flv/xml etc... le player Flash fonctionne impeccable et je m'attaque à la partie XML/Flash.

    En gros, Flash charge le XML et créé autant de movieclip qu'il y a de attribut dans le XML, ça il n'y a pas de soucis, les textfields sont bien créés, bien remplis, par la meme occasion, le movieclip est un bouton sur lequel on doit appuyé pour changer la vidéo du player...

    C'est à la création du bouton qu'il y a un soucis, j'ai essayé de créer une boucle "for", mais le résultat n'est pas fructueux, j'ai essayé de suivre ce tutorial : http://www.developpez.net/forums/showthread.php?t=14447

    Rien non plus, je ne comprends pas tout là...

    Donc, je poste le XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <racine>
    <clip fichier ='video1.flv' description ='Des petits chats tout mignons'/>
    <clip fichier ='tetss.flv' description ='Encore des chats'/>
    </racine>
    et mon code Flash :

    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
     
    var nb_element = xmlvideo.firstChild.childNodes.length;
    var X = 60;
    for (i=0; i<nb_element; i++) {
    	var num_lvl = getNextHighestDepth();
    	var mc_txt:MovieClip = this.createEmptyMovieClip(["mc_txt"+i], num_lvl);
    	var txt:TextField = mc_txt.createTextField("txt", num_lvl, 0, 0, 200, 20);
    	_root.mc_txt.beginFill(0xFFFFFF, 0);
    	_root.mc_txt.lineStyle(0, 0x000000);
    	_root.mc_txt.lineTo(mc_txt._width, 0);
    	_root.mc_txt.lineTo(mc_txt._width, mc_txt._height);
    	_root.mc_txt.lineTo(0, mc_txt._height);
    	_root.mc_txt.lineTo(0, 0);
    	_root.mc_txt.endFill();
    	mc_txt._width = txt._width;
    	mc_txt._height = txt._height;
    	mc_txt._x = 50;
    	mc_txt._y = X;
    	txt.text = xmlvideo.firstChild.childNodes[i].attributes.description;
    	txt.selectable=false;
        X += 20;
    }
    stop();
    J'ai surement commis une boulette, mais ça fait 5 jours que je me suis mis à Flash de manière sérieuse et j'aimerai avancer un peu...

    Merci d'avance à toutes les personnes qui pourront m'aiguiller un ti peu...

  2. #2
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    Tu dis que ça ne marche pas, mais tu a une erreur ?
    C'est quoi qui ne marche pas, tu a rien, tu a ton bouton sans le texte ?
    Sinon pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mc_txt:MovieClip = this.createEmptyMovieClip(["mc_txt"+i], num_lvl);
    Essai plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mc_txt:MovieClip = this.createEmptyMovieClip(_root["mc_txt"+i], num_lvl);

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 85
    Points
    85
    Par défaut
    Re,

    La création des movieclip se passent super bien, y a pas de problème, là où je ne comprends plus rien, c'est si dans le flash je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    _root.mc_txt.onPress = function() {
    		trace(mc_txt.txt.text);
    	};
    il me met la valeur du dernier champs affiché ...ici il m'affiche :

    "Encore des chats"

  4. #4
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    tu dois avoir un problème avec ta boucle, elle te retourne toujours la meme valeur ? c'est parce que ta boucle s'execute pratiquement instantanément, ensuite lorsque tu clic sur le bouton, la boucle est déja fini depuis longtemp, ta variable affichera toujour sa derniere valeur, pas celle quelle avait a la création du bouton.
    La solution est de définir la variable propre a chacun des boutons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(var i=0 ;i<4 ; i++){
    	this["bouton"+i].indice = i;
    	this["bouton"+i].onRelease = function(){
    		trace(this.indice);
    	}
    }

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 85
    Points
    85
    Par défaut
    Merci beaucoup, encore une fois, une nouvelle épine du pied m'est retiré... espérons que je sois moins mou du bulbe maintenant

    MERCI MILLE FOUA !!!

  6. #6
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    ya pas de mal, tu peux pas le deviner, j'ai cherché pas mal de temps sur ce problème et je n'avais pas 5 jours de flash.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Même problème
    Salut à tous, j'ai le même problème que Peacecraft95 mais ça ne marche pas pour moi. :/ Voila mon 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
    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
    var myXML:XML = new XML(); var x=10; m=0 ; b=15; l=0;s=20; z=15; l2=0;
    myXML.ignoreWhite=true;
    myXML.onLoad = function(sucess){
    	if (sucess) {test1._visible = false;
    	Create_Rect = function (nom, posx, posy, h, l, col) {
        this.createEmptyMovieClip("new_rect", this.getNextHighestDepth());
        new_rect.beginFill("0xEEEEEE"+col);
        new_rect.moveTo(posx, posy);
        new_rect.lineTo(posx+l, posy);
        new_rect.lineTo(posx+l, posy+h);
        new_rect.lineTo(posx, posy+h);
        new_rect.lineTo(posx, posy);
        new_rect.endFill();
        new_rect._name = nom;
     
    };
     
     
     
    logo._visible =false;logo2._visible =false;jdid._visible =false;
     
    /////////////////Numero table////////////
    for (i=1; i<=161 ; i++){a1=this.firstChild.childNodes[i-1].childNodes[0].firstChild.nodeValue;
    if(i<26){_root.createTextField("periode"+(i+1), i+200, x+8, b, 30, 50); z=z+40;  with (_root["periode"+(i+1)]) {text =a1 ;} x=x+40; if(i%5==0){b=b+40;x=10;}}
    if(i==26){b=b+50;}
    if((i>=26)&&(i<51)){_root.createTextField("periode"+(i+1), i+200, x+8, b, 30, 50); z=z+40;  with (_root["periode"+(i+1)]) {text =a1 ;} x=x+40; if(i%5==0){b=b+40;x=10;}}
    if(i==51){x=240; b=10;}
    if((i>=51)&&(i<81)){s=i-50; _root.createTextField("periode"+(i+1), i+200, x+8, b+5, 30, 50); z=z+40;  with (_root["periode"+(i+1)]) {text =a1 ;} x=x+40; if(s%6==0){b=b+40;x=240;}}
    if(i==81){x=240; b=260;}
    if((i>=81)&&(i<111)){s=i-50; _root.createTextField("periode"+(i+1), i+200, x+4, b+5, 30, 50); z=z+40;  with (_root["periode"+(i+1)]) {text =a1 ;} x=x+40; if(s%6==0){b=b+40;x=240;}}
    if(i==111){x=510; b=10;}
    if((i>=111)&&(i<136)){s=i-50; _root.createTextField("periode"+(i+1), i+200, x+4, b+5, 30, 50); z=z+40;  with (_root["periode"+(i+1)]) {text =a1 ;} x=x+40; if(s%5==0){b=b+40;x=510;}}
    if(i==136){x=510; b=260;}
    if((i>=136)&&(i<161)){s=i-50; _root.createTextField("periode"+(i+1), i+200, x+4, b+5, 30, 50); z=z+40;  with (_root["periode"+(i+1)]) {text =a1 ;} x=x+40; if(s%5==0){b=b+40;x=510;}}
    if (i%5==0) {z=z+60;} if (i%15==0) {s=s+40; l2=l2+1; if (i<99){z=20;}else{z=13;}} if (i%75==0) {s=s+60;} }
     
     
     
     
     
     
     
    /////////////////Cadre////////////
    x=10; u=40; b=10;
    for (i=1; i<=161 ; i++){ 
    etat1.text=etat= this.firstChild.childNodes[i-1].childNodes[1].firstChild.nodeValue;
    if(i<26){ Create_Rect("monclip"+i, x, b, 30, 30, 000000); x=x+40; if(i%5==0){b=b+40;x=10;}}
    if(i==26){b=b+50;}
    if((i>=26)&&(i<51)){ Create_Rect("monclip"+i, x, b, 30, 30, 000000); x=x+40; if(i%5==0){b=b+40;x=10;}}
    if(i==51){x=240; b=10;}
    if((i>=51)&&(i<81)){s=i-50; Create_Rect("monclip"+i, x, b, 30, 30, 000000); x=x+40; if(s%6==0){b=b+40;x=240;}}
    if(i==81){x=240; b=260;}
    if((i>=81)&&(i<111)){s=i-50; Create_Rect("monclip"+i, x, b, 30, 30, 000000); x=x+40; if(s%6==0){b=b+40;x=240;}}
    if(i==111){x=510; b=10;}
    if((i>=111)&&(i<136)){s=i-50; Create_Rect("monclip"+i, x, b, 30, 30, 000000); x=x+40; if(s%5==0){b=b+40;x=510;}}
    if(i==136){x=510; b=260;}
    if((i>=136)&&(i<161)){s=i-50; Create_Rect("monclip"+i, x, b, 30, 30, 000000); x=x+40; if(s%5==0){b=b+40;x=510;}}
     
     
    if (etat=="0"){newcolor = new Color("monclip"+i);newcolor.setRGB(0x55be47);}else {newcolor = new Color("monclip"+i);newcolor.setRGB(0xff9081);}
     _root["monclip"+i]._alpha=50; 
    this["monclip"+i].indice = i;
    _root["monclip"+i].onPress = function () {trace(i)
    }}
     
     
     
     
    		}}
    myXML.load("sample.xml");
    Merci de m'aider.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/04/2014, 10h26
  2. Réponses: 5
    Dernier message: 09/11/2007, 07h32
  3. Réponses: 2
    Dernier message: 11/07/2007, 10h40
  4. [MySQL] Traitement des variables d'une boucle for
    Par liryc78 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/03/2006, 20h53
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45

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