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

Créer et redimensionner des Clips Dynamiquement


Sujet :

ActionScript 3

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 32
    Points : 18
    Points
    18
    Par défaut Créer et redimensionner des Clips Dynamiquement
    Bonjour,
    Et bien j'ai trouvé nombre d'exemples expliquant la création dynamique de MClips, le chargement d'images via un XML ou le redimensionnement...
    ...mais je n'arrive pas à lier les 3 !!
    Je voudrais charger des images dans 6 clips différents via un XML en les redimensionnant et en les positionnant.

    J'ai essayé beaucoup de choses, celle-ci est celle que je trouve la plus correcte, mais seul le dernier clip est affiché, (alors que les clips sont créés et ajoutés à la liste d'affichage dans la boucle..!?),

    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
     
    package classes
    {
    import ...
     
    public class interieur extends MovieClip
    {
    public static var chargementXML:URLLoader = new URLLoader();
    public static var fichier:URLRequest=new URLRequest("ressources/diapoINT.xml");
     
    public function interieur() 
    {
    chargementXML.addEventListener( Event.COMPLETE, chargementComplet );
    chargementXML.load( fichier );
     
    function chargementComplet(e:Event):void 
    {
     
    //CRÉATION DES TABLEAUX
    var tabimg:Array=new Array();
    var tabClip:Array=new Array();
     
    //LECTURE DU XML
    var programme:XML=new XML(e.target.data);
    var artiste:XMLList=programme.elements();
     
    for each(var prop:XML in artiste)
    {
    tabimg.push(prop.image);
    }
     
    for (var j:int=0; j<=5; j++)
    { 
    var vignUrl:URLRequest=new URLRequest(tabimg[j]); 
    var vignChargeur:Loader = new Loader(); 
    var nomClip:MovieClip = new MovieClip(); 
    vignChargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
     
    nomClip.name ="vignClip"+j;
     
    vignChargeur.load(vignUrl); 
    } 
     
    function loaded(e:Event):void
    {
    vignChargeur.width = 150;
     
    vignChargeur.height = 100;
     
    nomClip.addChild(vignChargeur); 
     
    addChild(nomClip);
     
    nomClip.x=150*j;
     
    trace(nomClip.x);
     
    }
    }
    }
    }
    }
    Merci d'avance pour votre aide, (c'est ici ma dernière tentative avant que j'en soit réduit à remette du code partout dans des clips !!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Hum
    Je regarderai ce soir si j'ai le temps, mais comme ça, en diagonale, je pense que le problème vient de tes loaders qui sont locaux à une fonction. Et en plus, tu utilises une seule variable de type Loader et c'est toujours un peu touchy.

    J'ai eu des soucis de persistance de ce type

    Essaye en les mettant comme variable d'instance de ta classe et en utilisant un tableau de Loader.

    En espérant ne pas te raconter des bêtises

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Merci de m'aider, je suis bien kéblo !

    j'ai déjà essayé le tableau de loaders...sans résultat, mais je débute alors je vais retenter !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Bon ba c'est pas fameux... Je galère avec mes tableaux... Je met tout de même ce que j'ai pondu...


    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
    function chargementComplet(e:Event):void 
    			{
    //CRÉATION DES TABLEAUX
    				var tabimg:Array=new Array();
    				var tabClip:Array=new Array();
    				var tabLoaders:Array=new Array();
     
    //LECTURE DU XML
    				var programme:XML=new XML(e.target.data);
    				var artiste:XMLList=programme.elements();
     
    for each(var prop:XML in artiste)
    				{
    					tabimg.push(prop.image);//chargement des urls dans le tableau 
    					var vignChargeur:Loader = new Loader(); 
    					vignChargeur.name ="vignCharg"+prop.numero;//prop.numero étant un int...
    					tabLoaders.push(vignChargeur); // insertion des loaders dans un tableau (mais ça m'a pas l'air toptop !?)
    					trace(tabLoaders[prop.numero]);
    					var nomClip:MovieClip = new MovieClip(); 
    					nomClip.name ="vignClip"+j;
    					tabClip.push(nomClip);
    				}
     
    for (var j:int=0; j<=5; j++)
    					{ 
    						var vignUrl:URLRequest=new URLRequest(tabimg[j]); 
    						tabLoaders[j].contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
    						nomClip.name ="vignClip"+j;
    						tabLoaders[j].load(vignUrl); 
     
     
    						function loaded(e:Event):void
    						{
    							tabLoaders[j].width = 150;
    							tabLoaders[j].height = 100;
                                nomClip.addChild(tabLoaders[j]); 
                                addChild(nomClip);
    							nomClip.x=100*j;
    							trace(nomClip.x);
    						}
    					} 
     
    		            }
                  }
           }
    }
    Merci encore pour ton aide précieuse.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Je suis allé voir dans mon programme
    Alors, comment avais-je fait pour charger n Movieclips dans un autre ?

    Très simplement: le movieClip principal bouclait sur les n autres à créer, par exemple comme tu le fais sur base d'un fichier xml

    Et pour ces n autres: j'ai créé une classe qui hérite de MovieClip et qui a tout pour charger elle-même l'image qu'elle devra afficher.

    Le MovieClip principal n'avait plus qu'à passer l'image à charger à chacun de ses sous-Movieclips et appeler leur fonction "charge !"

    Ensuite, chaque sous-MovieClip signalait au Movieclip parent qu'il était chargé par appel à une de ses fonctions... dans laquelle je faisais les derniers réglages.

    Et ça marche très bien.

    J'espère avoir pu t'aider.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    C'est sympa de prendre du temps.

    Mais je suis débutant,(c'est ma première classe-haha-) et je comprend encore mieux le code que sa description verbale... Et j'ai encore du mal avec les passages de paramètres... j'ai modifié mon code comme ci-après mais ça ne me donne rien du tout ! Pas un clip visible, pas une erreur !!

    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
     
    for (var j:int=0; j<=5; j++)
                                      { 
                                         var vignUrl:URLRequest=new URLRequest(tabimg[j]); 
                                         var vignChargeur:Loader = new Loader(); 
                                         var nomClip:MovieClip = new MovieClip(); 
                                         //vignChargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
                                         vignChargeur.addEventListener(Event.COMPLETE, loaded);
                                         nomClip.name ="vignClip"+j;
     
                                         vignChargeur.load(vignUrl); 
                                      } 
     
                                     function loaded(e:Event):void
                                      {
                                          trace(e.target);
     
                                          e.target.width = 150;
     
                                          e.target.height = 100;
     
                                          nomClip.addChild(e.target); 
     
                                          addChild(nomClip);
     
                                          nomClip.x=150*j;
     
                                          trace(nomClip.x);                  
                                     }
                             }
                      }
             }

Discussions similaires

  1. Créer et compiler des classes dynamiquement
    Par minoFBS dans le forum Général Java
    Réponses: 3
    Dernier message: 09/06/2010, 21h24
  2. Procédure Stockée pour créer des TABLE dynamiquement
    Par GuyverZ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2009, 22h29
  3. redimensionner un clip dynamiquement
    Par hlcginfo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 03/07/2008, 11h41
  4. Réponses: 13
    Dernier message: 15/11/2007, 19h48
  5. Creér des Clip dynamiquement dans la scène
    Par jpboogie dans le forum Flash
    Réponses: 2
    Dernier message: 04/10/2006, 16h47

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