Problème chargement XML

Résolu
Signaler
Messages postés
23
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 avril 2008
-
Messages postés
2
Date d'inscription
samedi 3 mars 2007
Statut
Membre
Dernière intervention
25 octobre 2009
-
Bonjour à tous,

Voici mon problème. J'ai un fichier XML que j'arrive à charger, dans mon code je fais une redimension automatique de l'image chargée. Le redimensionnement s'effectue sur toutes les images sauf, sur la première image qui apparaît lorsque le script se lance. A mon avis le problème vient du fait que le XML n'a pas eu le temps de se charger entièrement avant que le redimensionnement s'opère.

Voici mon code :

var fich_xml:XML = new XML();
fich_xml.onLoad = charger;
fich_xml.load("album.xml"); // on charge le XML se nommant album.xml
fich_xml.ignoreWhite = true;
var currentnode:XMLNode;
var nbr_img:Number = 0;
var increm:Number = 1;
var totalligne:Number;

function charger(success) {
    if (success) {
        var racine:XMLNode = fich_xml.firstChild.firstChild;
        currentnode = racine.firstChild;
        totalligne = racine.childNodes.length;
        updateSlide(currentnode);
    }
}

function updateSlide(c) {
    my_mc = new MovieClipLoader();
    my_mc.onLoadInit = function() {
        htr = targetClip._height;
        lg = targetClip._width;
        if (htr>lg) {
            pourcentage = htr/htr;
        } else {
            pourcentage1 = lg/lg;
        }
        targetClip._height = pourcentage*275;
        targetClip._width = pourcentage1*360;
    };
    my_mc.loadClip(c.attributes.jpegURL, targetClip);
    //Index_txt.text = increm+"/"+totalligne; //inutile
    chmp_txt.text = c.attributes.description1;// charge le texte dans "chmp_txt"
    my_mc.loadClip(c.attributes.titre, cliptitre);
   
}

Si une âme charitable pouvait m'aider ça serait vraiment sympa, merci d'avance.

12 réponses

Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Salut,

essaye la fonction suivante (avec l'écouteur)

mclListener.onLoadInit = function(target_mc:MovieClip) {
 var H_Factor:Number = 1;
 var W_Factor:Number = 1;
 var scaleFactor:Number=1
 if (target_mc._width>650) {
  W_Factor = target_mc._width/360;
 }
 if (target_mc._height>500) {
  H_Factor = target_mc._height/275;
 }
 if (W_Factor>H_Factor) {
  ScaleFactor=W_Factor
 } else {
  ScaleFactor=H_Factor
 }
 target_mc._width = target_mc._width/ScaleFactor;
 target_mc._height = target_mc._height/ScaleFactor;




};






@+
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Salut,

je modifierais légèrement la fonction updateSlide()
Il n'est pas utile de redéfinir à chaque fois un nouveau movieClipLoader(), sort le de ta fonction

var fich_xml:XML = new XML();
fich_xml.onLoad = charger;
fich_xml.load("album.xml"); // on charge le XML se nommant album.xml
fich_xml.ignoreWhite = true;
var currentnode:XMLNode;
var nbr_img:Number = 0;
var increm:Number = 1;
var totalligne:Number;

function charger(success) {
    if (success) {
        var racine:XMLNode = fich_xml.firstChild.firstChild;
        currentnode = racine.firstChild;
        totalligne = racine.childNodes.length;
        updateSlide(currentnode);
    }
}
my_mc = new MovieClipLoader();
my_mc.onLoadInit = function(target_mc:MovieClip) {
        htr = target_mc._height;
        lg = target_mc._width;
        if (htr>lg) {
            pourcentage = htr/htr;
        } else {
            pourcentage1 = lg/lg;
        }
        target_mc._height = pourcentage*275;
        target_mc._width = pourcentage1*360;
    };

function updateSlide(c) {
    my_mc.loadClip(c.attributes.jpegURL, targetClip);
    //Index_txt.text = increm+"/"+totalligne; //inutile
    chmp_txt.text = c.attributes.description1;// charge le texte dans "chmp_txt"
    my_mc.loadClip(c.attributes.titre, cliptitre);
}

@+
Messages postés
23
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 avril 2008

Merci pour ta réponse, effectivement ça fonctionne aussi comme cela, cependant la première image ne se redimensionne toujours pas. J'ai fais quelques recherches par ci par là et j'ai trouvé qu'il fallait que je mette une écouteur (Listener), le problème c'est que je ne sais pas trop utiliser les écouteurs.
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Re !

voila comment utiliser un écouteur :

var fich_xml:XML = new XML();
fich_xml.onLoad = charger;
fich_xml.load("album.xml"); // on charge le XML se nommant album.xml
fich_xml.ignoreWhite = true;
var currentnode:XMLNode;
var nbr_img:Number = 0;
var increm:Number = 1;
var totalligne:Number;

function charger(success) {
    if (success) {
        var racine:XMLNode = fich_xml.firstChild.firstChild;
        currentnode = racine.firstChild;
        totalligne = racine.childNodes.length;
        updateSlide(currentnode);
    }
}
var my_mc:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();

mclListener.onLoadInit = function(target_mc:MovieClip) {
        htr = target_mc._height;
        lg = target_mc._width;
        if (htr>lg) {
            pourcentage = htr/htr;
        } else {
            pourcentage1 = lg/lg;
        }
        target_mc._height = pourcentage*275;
        target_mc._width = pourcentage1*360;
};

my_mc.addListener(mclListener);

function updateSlide(c) {
    my_mc.loadClip(c.attributes.jpegURL, targetClip);
    //Index_txt.text = increm+"/"+totalligne; //inutile
    chmp_txt.text = c.attributes.description1;// charge le texte dans "chmp_txt"
    my_mc.loadClip(c.attributes.titre, cliptitre);
}

@+
Messages postés
23
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 avril 2008

Merci beaucoup l'écouteur fonctionne, mais ça ne change rien pour mon redimensionnement d'image, la première image chargée est disproportionnée pas rapport aux autres. Pourtant quand je vais à la 3ème image par exemple et que je reviens à la première par la suite, cette fois-ci l'image est bien dimensionner. J'trouve ça plutôt louche, et ça m'énerve par la même occasion.
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Salut,

en reagerdant de plus près, ton script de redimensionnement me semble louche...
pourcentage = htr/htr;  un nombre divisé par lui même donne toujours 1 !!!
donc,
        target_mc._height = pourcentage*275;
        target_mc._width = pourcentage1*360;

va redimensionner ton clip target_mc au dimensions 360x275 mais en déformant l'image
Sans doute que les autres images sont au bon ration dimensionnel dès le départ donc ne sont pas déformées.

Je pense que c'est là que tu dois chercher

@+
Messages postés
23
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 avril 2008

J'ai utilisé cette méthode pour être sûr que les images soit redimensionner à la même taille, mais je vais quand même voir.

Merci
Messages postés
23
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 avril 2008

Re-bonjour, ça va faire deux jours et je n'ai toujours pas trouver de solutions. J'ai changé ma première image qui a donc une taille différente, et avec n'importe quelle taille d'image le redimensionnement ne fonctionne pas pour la première image chargée. Je ne comprends vraiment pas d'autant plus que l'image se redimesionne quand on revient dessus par la suite.
Messages postés
23
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 avril 2008

Merci Girou de te casser la tête pour mon problème, mais ta solution ne marche pas, enfin... maintenant le problème est différent, les 2 premières images sont redimensionnemées indentiquement et après c'est l'anarchie, elles sont de n'importe quelle taille le redimensionnement est totalement aléatoire. En faite avec ta solution j'ai à moitié résolu mon problème, en effet, si toutes mes images ont la même dimension initiale elles seront reimensionner de la même manière, j'aurais voulu un redimensionnement qui s'adapte à toutes les tailles d'images, mais c'est pas grave merci encore Girou.
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Oups,

à la relecture il y a un petit soucis dans mon code...

mclListener.onLoadInit = function(target_mc:MovieClip) {
 var H_Factor:Number = 1;
 var W_Factor:Number = 1;
 var scaleFactor:Number=1
// on va ajouter ca au cas ou
target_mc._xscale=target_mc._yscale=100
 if (target_mc._width>360) {
  W_Factor = target_mc._width/360;
 }
 if (target_mc._height>275) {
  H_Factor = target_mc._height/275;
 }
 if (W_Factor>H_Factor) {
  ScaleFactor=W_Factor
 } else {
  ScaleFactor=H_Factor
 }
 target_mc._width = target_mc._width/ScaleFactor;
 target_mc._height = target_mc._height/ScaleFactor;
};

Aller, on va finir par y arriver !!!
@+
Messages postés
23
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
30 avril 2008

Tu sais que je t'aime ? :)

Merci beaucoup Girou ça marche, maintenant je vais chercher comment faire une transition lors du changement d'image !

A+!
Messages postés
2
Date d'inscription
samedi 3 mars 2007
Statut
Membre
Dernière intervention
25 octobre 2009

Bonjour !!!

J'ai un soucis et j'ai besoin d'aide.
Je veux créer un lien vers une page et à chaque fois que tu cliques sur ce lien, le contenu de la page change.

Merci

Noel