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 :

ActionScript 2 Manipuler plusieurs clips créés avec une boucle for


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut ActionScript 2 Manipuler plusieurs clips créés avec une boucle for
    Bonjour à tous.
    Je suis un graphiste qui connaît quelques notions de flash qui s'apparente le plus souvent à de la bidouille, ce qui fait que parfois, je n'y arrive pas du tout. Un ami informaticien, m'a parlé de ce site en me disant tout le bien du monde, donc j'entre timidement mais sereinement vous demander de l'aide.
    Je veux créer un clip qui va mettre à la suite plein d'images sur une ligne qu'il a récupérer dans un dossier via un fichier XML. Pour l'instant, j'arrive à piocher les images (et c'est pas sans fierté B) ) et à les afficher. Mais voilà, ce que je n'arrive pas à faire c'est créer plein de clip avec une boucle for et les manipuler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bouton1.onRelease=function() 
    { largeur = 0; 
    for (i = 0; i<19; i++) 
    { _root.createEmptyMovieClip("mc_img"+i,0); 
    monmcl.loadClip("images/" + images[i],"mc_img"+i);
     _root["mc_img"+i]._x = largeur; largeur = largeur + ["mc_img"+i]._width; } }
    Quelques explication:
    - monmcl est un movieClipLoader défini plus haut dans le code.
    - ce que je veux, c'est:
    1. faire un clip dans lequel je met ma première image dont le nom est stocké dans le tableau images[]
    2. déterminer la largeur de l'image pour ensuite la placer juste à droite des précédentes.
    Merci beaucoup à vous.

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Salut adinx et bienvennue sur Developpez.net

    je vois que ton code est presque bon.

    il y a une erreur sur le gestion des niveaux lorsque tu crées tes clips vides,
    utilise la fonction MovieClip.getNextHighestDepth pour récupérer le niveau au dessus de tout les autres.

    sinon tu peux aussi créer un tableau pour tes clips :
    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
    var images:Array = new Array();
    var clipsImages:Array = new Array();
     
    bouton1.onRelease=function() 
    {
     var largeur:Number = 0; 
     for (i = 0; i<images.length; i++) 
     {
      var tmpClip:MovieClip = _root.createEmptyMovieClip("mc_img"+i, _root.getNextHighestDepth());
      clipsImages.push( tmpClip );
      monmcl.loadClip("images/" + images[i], tmpClip);
      tmpClip._x = largeur;
      largeur += tmpClip._width;
     }
    };

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Tout d'abord, merci de ton aide salvateur.
    Les niveaux, j'avais pas très bien compris les niveaux, mais ok je vois maintenant.
    Donc maintenant, il charge bien toutes les images (ce qui est plutôt sympathique). Le problème c'est qu'il les superpose toutes. Il considère que _root["mc_img"+i]._x = 0 donc mon largeur est toujours à 0.
    J'imagine qu'il considère que le clip n'a pas de largeur, c'est l'image qui est chargé dedans qui en a une.
    J'avais essayé avec les tableaux, mais je préfère m'en passer, j'ai un peu de mal avec ça.

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Lut,

    en fait il faut effectuer le positionnement une fois l'image chargée (sinon la largeur est nulle),

    tu peux définir la fonction LoadInit de ton MovieClipLoader et le faire dans cette fonction.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Youhou, merci ça marche Tadadadadam. Héhé, je suis trop content. Tu me sauves la vie. Je faisais avec un LoadComplete mais visiblement LoadInit, c'est pareil mais ça marche. Je voudrais bien une explication pour comprendre.
    A titre d'information pour ceux qui aurait le même problème que moi, voici le 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
    monlv = new LoadVars();
    monlv.onLoad=function(etat){ 
    	if (etat){
    		images=this.liste.split(",");
    		monmcl = new MovieClipLoader();
    		_root.createEmptyMovieClip("mc_img",0);
    		emcl = new Object();
    		emcl.onLoadError=function(cible,errorcode){
    				trace("erreur de chargement d'une image dans : " + cible._name + " code erreur : " + errorcode);
    				}
    		emcl.onLoadInit=function(cible){
    				trace("chargement de l'image ok dans : " + cible._name+" dont la taille est = "+getMCWidth(cible));
    		}
    		monmcl.addListener(emcl);
    	}else{ 
    		trace("erreur de chargement de la liste d'images     ");
    	}
    	bouton1.onRelease=function() { 
    		largeur = 0; 
     
    		for (i = 1; i<19; i++) 
    			{ 
     
    			_root.createEmptyMovieClip("mc_img"+i,_root.getNextHighestDepth()); 
    			monmcl.loadClip("images/" + images[i],"mc_img"+i);
    			_root["mc_img"+i]._x = largeur; 
     
     
    			largeur + ["mc_img"+i]._width; 
    			} 
    	}
    function getMCWidth(target_mc:MovieClip):Number {
        return target_mc._width;
    	}
    }
    monlv.load("liste_images.txt");
    le fichier liste_images.txt, je voulais m'en servir au début, mais j'essaie déjà de faire le reste avant.
    Youplaboum

  6. #6
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Citation Envoyé par adinx
    Je faisais avec un LoadComplete mais visiblement LoadInit, c'est pareil mais ça marche. Je voudrais bien une explication pour comprendre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onLoadComplete = function([target_mc:MovieClip], [httpStatus:Number]) {}
    Appelé lorsque le fichier qui a été chargé avec MovieClipLoader.loadClip() a fini son téléchargement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onLoadInit = function([target_mc:MovieClip]) {}
    Appelé une fois les actions de la première image du clip chargé exécutées.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    héhé merci

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Un autre problème.
    Maintenant, il affiche bien mes images, mais elles ne le sont pas à 100% (ça se voit facilement en ouvrant l'image avec un autre programme et en supperposant), elles sont un peu plus petite (env.70%).
    Comment ça se fait?

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

Discussions similaires

  1. Créer plusieurs edits texts avec une boucle
    Par mokochan dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 31/05/2013, 12h58
  2. Réponses: 2
    Dernier message: 01/05/2013, 22h40
  3. cibler des clips imbriqués et placés avec une boucle for
    Par pierroM dans le forum ActionScript 1 & ActionScript 2
    Réponses: 7
    Dernier message: 01/02/2009, 22h05
  4. Incrémentation dynamique d'un textbox avec une boucle for
    Par Etanne dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/03/2006, 15h17
  5. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23

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