L'image suivante ne se redimensionne pas

cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010 - 3 mai 2007 à 11:29
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010 - 3 mai 2007 à 15:54
Comme la question que j'avais poser n'a pas recu de réponse je la repose de nouveau.

J'ai decidé de crée un album photo , ce qui se passe c'est que ma premier photo se redimmensionne et se possitionne dans le clip, se qui n'est pas le cas pour les suivantes qui reste en taille réel.
Je n'arrive pas a trouver d'ou viens mon probleme donc si on pouvais m'aider se serai gentil

voici mon code:


//declaration XML
photos_xml = new XML();
photos_xml.ignoreWhite = true;
// fonction
photos_xml.onLoad = function(ok)


{
 //initialisation des variables
 if (ok) {
  noeuds = photos_xml.firstChild.childNodes;
  // on se positionne au second niveau
  nbrPhotos = noeuds.length;
  // on récupère le nombre de noeuds à ce niveau
  premierePhoto = this.firstChild.firstChild;
  // on sélectionne le premier noeud
  dernierePhoto = this.firstChild.lastChild;
  // position de l'image
  // on sélectionne le dernier noeud
  enCours = premierePhoto;
  // enCours correspond au noeud en cours d'affichage
  // ici, la premiere photo sera donc la premiere affichée
  affichePhoto(enCours);
  // on affiche la photo du premier noeud
 }
};
//charegement du fichier XML
photos_xml.load("photos.xml");
// affichage de la photo
function affichePhoto(photo) {
//là il se passe que photo.attributes.fichier
//remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..
//on crée le clip vide dans lequel on va loader notre image (on le nomme container et on lui donne la première profondeur libre)
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//on loade notre image (ou notre swf) dans le clip vide
conteneur.loadMovie(photo.attributes.fichier);
//à chaque fps, un événement enterFrame est déclenché par flash, on définit un écouteur sur cet événement : à chaque fps, le code entre { } va être exécuté (ce qui va nous permettre de tester à chaque passage si le chargement est fini ou pas).
this.onEnterFrame = function():Void { 
//on définit une variable �18;charge�19; dans laquelle on met le nombre de bytes qui ont déjà été chargés par le loadMovie (dans le clip conteneur) 
var total:Number = conteneur.getBytesTotal();
//on définit une variable �18;total�19; dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
var charge:Number = conteneur.getBytesLoaded();
//on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable �18;pourcent�19;
var pourcent:Number = Math.round(charge/total*100); 


//on teste si le pourcentage = 100 pour savoir si le chargement est terminé
if (pourcent == 100) {
 
//si oui, le chargement est fini, on supprime l�19;écouteur pour ne plus exécuter tout ça     
delete this.onEnterFrame;
//je place mon image dans le clip.    
conteneur._x = 133.0;
conteneur._y = 78.0;
//ici je redimensionne les images
conteneur._width = 317.9;
conteneur._height= 256.0;
}else{   
//ici le chargement n�19;est pas terminé, on peut par exemple faire progresser une progressbar (en fonction de la valeur de �18;pourcent�19; pour montrer l�19;avancement du chargement.
}}


textes = photo.attributes.num + "/" + nbrPhotos + " : " + photo.attributes.desc;

}






 






 

Miss1

6 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
3 mai 2007 à 14:12
Tu met :
conteneur._x = 133.0;
conteneur._y = 78.0;
et
conteneur._width = 317.9;
conteneur._height= 256.0;
alors que le clip vide que tu as créé via createEmptyMovieClip (); est nommé "container".

Alors soit change
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
en
var conteneur:MovieClip = this.createEmptyMovieClip("conteneur", this.getNextHighestDepth());

Soit change"conteneur" en "container" de tes position _x et _y, et _width et height
0
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
3 mai 2007 à 14:57
J'ai essayer mais quand je modifie en containeur il ne me la met plus dans le clip et ne me la redimmensionne plus

 
Miss1
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
3 mai 2007 à 15:16
Essaye sa :

/declaration XML
photos_xml = new XML();
photos_xml.ignoreWhite = true;
// fonction
photos_xml.onLoad = function(ok) {
 //initialisation des variables
 if (ok) {
  noeuds = photos_xml.firstChild.childNodes;
  // on se positionne au second niveau
  nbrPhotos = noeuds.length;
  // on récupère le nombre de noeuds à ce niveau
  premierePhoto = this.firstChild.firstChild;
  // on sélectionne le premier noeud
  dernierePhoto = this.firstChild.lastChild;
  // position de l'image
  // on sélectionne le dernier noeud
  enCours = premierePhoto;
  // enCours correspond au noeud en cours d'affichage
  // ici, la premiere photo sera donc la premiere affichée
  affichePhoto(enCours);
  // on affiche la photo du premier noeud
 }
};
//charegement du fichier XML
photos_xml.load("photos.xml");
// affichage de la photo
function affichePhoto(photo) {
//là il se passe que photo.attributes.fichier
//remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..
//on crée le clip vide dans lequel on va loader notre image (on le nomme container et on lui donne la première profondeur libre)
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//on loade notre image (ou notre swf) dans le clip vide
conteneur.loadMovie(photo.attributes.fichier);
//à
chaque fps, un événement enterFrame est déclenché par flash, on définit
un écouteur sur cet événement : à chaque fps, le code entre { } va être
exécuté (ce qui va nous permettre de tester à chaque passage si le
chargement est fini ou pas).
this.onEnterFrame = function():Void { 
//on
définit une variable �18;charge�19; dans laquelle on met le nombre de bytes
qui ont déjà été chargés par le loadMovie (dans le clip conteneur) 
var total:Number = conteneur.getBytesTotal();
//on définit une variable �18;total�19; dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
var charge:Number = conteneur.getBytesLoaded();
//on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable �18;pourcent�19;
var pourcent:Number = Math.round(charge/total*100); 

//on teste si le pourcentage = 100 pour savoir si le chargement est terminé
if (pourcent == 100) {
 
//si oui, le chargement est fini, on supprime l�19;écouteur pour ne plus exécuter tout ça     
delete this.onEnterFrame;
//je place mon image dans le clip.    
container._x = 133.0;
container._y = 78.0;
//ici je redimensionne les images
container._width = 317.9;
container._height= 256.0;
}else{   
//ici
le chargement n�19;est pas terminé, on peut par exemple faire progresser
une progressbar (en fonction de la valeur de �18;pourcent�19; pour montrer
l�19;avancement du chargement.
}}

textes = photo.attributes.num + "/" + nbrPhotos + " : " + photo.attributes.desc;

}
0
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
3 mai 2007 à 15:27
Salut,

Désolé de ne pas avoir répondu à ton post précédent.
J'ai regardé ton code, en fait, je n'arrive même pas à comprendre comment tu arrives à afficher les images suivantes car tu ne lances la fonction "afficherPhoto" qu'une seule fois !

Le principe que tu dois appliquer pour tes images est celui ci :
<li>tu dois ajouter une photo</li><li>attendre le chargement de cette image</li><li>une fois chargée, tu la retouches (redimension etc ... ce que tu veux)</li><li>une fois modifiée, tu relances l'affichage pour la photo suivante</li>Voici ton code, je mets en couleur les ajouts que j'ai effectués
Code :
    //declaration XML
    photos_xml = new XML();
    photos_xml.ignoreWhite = true;
   
    var nbrPhotos            :Number    = 0;
    var numeroPhoto_enCours    :Number = 0;
   
    // fonction
    photos_xml.onLoad = function(ok){
         //initialisation des variables
        if (ok) {
            noeuds = photos_xml.firstChild.childNodes;
            // on se positionne au second niveau
            nbrPhotos = noeuds.length;

            numeroPhoto = 0;
            // on récupère le nombre de noeuds à ce niveau
            premierePhoto = this.firstChild.firstChild;
            // on sélectionne le premier noeud
            dernierePhoto = this.firstChild.lastChild;
            // position de l'image
            // on sélectionne le dernier noeud
            enCours = premierePhoto;
            // enCours correspond au noeud en cours d'affichage
            // ici, la premiere photo sera donc la premiere affichée
            affichePhoto(enCours);
            // on affiche la photo du premier noeud
        }
    };
    //charegement du fichier XML
    photos_xml.load("photos.xml");
    // affichage de la photo
    function affichePhoto(photo) {
        //là il se passe que photo.attributes.fichier
        //remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..
        //on crée le clip vide dans lequel on va loader notre image (on le nomme container et on lui donne la première profondeur libre)
        var conteneur:MovieClip = this.createEmptyMovieClip("container" + numeroPhoto, this.getNextHighestDepth());
        //on loade notre image (ou notre swf) dans le clip vide
        conteneur.loadMovie(photo.attributes.fichier);
        //à chaque fps, un événement enterFrame est déclenché par flash, on définit un écouteur sur cet événement : à chaque fps, le code entre { } va être exécuté (ce qui va nous permettre de tester à chaque passage si le chargement est fini ou pas).
        this.onEnterFrame = function():Void {
            //on définit une variable �18;charge�19; dans laquelle on met le nombre de bytes qui ont déjà été chargés par le loadMovie (dans le clip conteneur)
            var total:Number = conteneur.getBytesTotal();
            //on définit une variable �18;total�19; dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
            var charge:Number = conteneur.getBytesLoaded();
            //on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable �18;pourcent�19;
            var pourcent:Number = Math.round(charge/total*100);
            //on teste si le pourcentage = 100 pour savoir si le chargement est terminé
            if (pourcent == 100) {
                //si oui, le chargement est fini, on supprime l�19;écouteur pour ne plus exécuter tout ça    
                delete this.onEnterFrame;
                //je place mon image dans le clip.   
                conteneur._x = 133.0;
                conteneur._y = 78.0;
                //ici je redimensionne les images
                conteneur._width = 317.9;
                conteneur._height= 256.0;
                // Relancement de la fonction pour la photo suivante :
                if(numeroPhoto_enCours < nbrPhotos){
                    numeroPhoto_enCours++;
                    affichePhoto(photos_xml.firstChild[numeroPhoto_enCours]);
                }else{
                    trace("fin du chargement de toutes les images");
                }
            }else{  
        //ici le chargement n�19;est pas terminé, on peut par exemple faire progresser une progressbar (en fonction de la valeur de �18;pourcent�19; pour montrer l�19;avancement du chargement.
            }
        }
        textes = photo.attributes.num + "/" + nbrPhotos + " : " + photo.attributes.desc;
    }
Fin code

1.    Le fait d'initialiser les deux variables en dehors des fonctions me permet de pouvoir les utiliser à l'extérieur de cette fonction.
       En effet, une variable créée dans une fonction est effacée une fois que la fonction est finie.
       Je sauvegarde donc le numéro du noeud actuellement traîté.

2.    Je concatène le numéro du noeud dans le nom du clip créé. Si je ne le fais pas, il va à chaque passage écraser le clip en le recréant.

3.    Une fois que l'image est totalement chargée, je vérifie que le noeud sur lequel je travaille n'est pas le dernier. Si c'est le cas, j'arrête le calcul. Dans le cas contraire, je lui demande de traîter le noeud suivant.

Je n'ai pas testé, mais je pense qu'avec ça, ça devrait aller.

A+ et bon codage

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
3 mai 2007 à 15:53
 bon je vais déprimer dans mon coin car sa ne me redimmenssionne tj pas mes photos

 
Miss1
0
cs_Miss1 Messages postés 221 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 22 décembre 2010
3 mai 2007 à 15:54
je suis null ou quoi se qui m'enerve c que c okay pour la premiere et que pr la second c mort

 
Miss1
0
Rejoignez-nous