Problème chargement XML

Résolu
cs_ulysse68 Messages postés 23 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 30 avril 2008 - 1 avril 2008 à 08:20
noelakakpo Messages postés 2 Date d'inscription samedi 3 mars 2007 Statut Membre Dernière intervention 25 octobre 2009 - 18 mai 2008 à 11:57
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

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
5 avril 2008 à 09:14
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;




};






@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
1 avril 2008 à 08:52
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);
}

@+
0
cs_ulysse68 Messages postés 23 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 30 avril 2008
1 avril 2008 à 09:05
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.
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
1 avril 2008 à 09:41
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);
}

@+
0

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

Posez votre question
cs_ulysse68 Messages postés 23 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 30 avril 2008
1 avril 2008 à 10:04
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.
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
1 avril 2008 à 12:22
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

@+
0
cs_ulysse68 Messages postés 23 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 30 avril 2008
1 avril 2008 à 14:47
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
0
cs_ulysse68 Messages postés 23 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 30 avril 2008
4 avril 2008 à 11:22
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.
0
cs_ulysse68 Messages postés 23 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 30 avril 2008
7 avril 2008 à 10:00
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.
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
8 avril 2008 à 19:12
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 !!!
@+
0
cs_ulysse68 Messages postés 23 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 30 avril 2008
9 avril 2008 à 08:34
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+!
0
noelakakpo Messages postés 2 Date d'inscription samedi 3 mars 2007 Statut Membre Dernière intervention 25 octobre 2009
18 mai 2008 à 11:57
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
0
Rejoignez-nous