Relancer un diaporama XML sur un second XML

vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022 - 29 juin 2009 à 15:51
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022 - 30 juin 2009 à 10:33
Salut tout le monde... alors voilà, je suis dsl mais je ne sais plus où j'ai pris le code dont je vais vous parler :/ snif.
Le code suivant permet de charger un fichier xml contenant une liste d'images. Les dites images sont ensuite chargées successivement dans 2 clips superposés, et sont manipulés pour donner un effet de transition genre, "fondu enchainé"... très cool... ça marche bien, mais j'aimerais qu'en appuyant sur un bouton, on charge un autre fichier xml... et que donc, d'autres images défilent... voilà le code de départ, qui charge tout ça :

//Création des variablesvar images:Array new Array();var param:Array new Array();var imageActu:Number;var imageNext:Number;var annee:Date = new Date();
var interAlpha:Number;var interImage:Number;var interTest:Number;                //Viariables des intervalsvar timeStart:Number 1000;var timeBetween:Number 500;                        //Temps de pause par défaut
var val_alpha:Number = 0;                                                        //Variable pour la transition alphavar image1:Boolean false;var image2:Boolean false;var init:Boolean = true;    //Création des flags

//MovieClip Conteneur1var mclListener1:Object new Object();var mcl1:MovieClipLoader new MovieClipLoader();mcl1.addListener(mclListener1);
//MovieClip Conteneur2var mclListener2:Object new Object();var mcl2:MovieClipLoader new MovieClipLoader();mcl2.addListener(mclListener2);   
//Création d'un nouveau menu contextuelvar rootMenu new ContextMenu();rootMenu.hideBuiltInItems();var rootMenuItem new ContextMenuItem("© "+annee.getFullYear()+" ecranbleuxv.fr", email);
rootMenu.customItems.push(rootMenuItem);_root.menu = rootMenu;function email() {getURL("http://www.ecranbleuxv.com/sites/ecb/index.html", "_blank");}

var diapo:XML = new XML();
diapo.ignoreWhite = true;
diapo.load("upload/lesimagesMenu1.txt");
//Traitement une fois le chargement effectuer
diapo.onLoad = function(success:Boolean) {
    if(success){
        //Creation des noeud
        var noeudImage:XMLNode = this.firstChild.childNodes[0];
        var noeudParam:XMLNode = this.firstChild.childNodes[1];
        for (var i:Number = 0; i<noeudImage.childNodes.length; i++){
            var temp:Object = new Object();
            temp.titre = noeudImage.childNodes[i].attributes.titre;
            temp.comm = noeudImage.childNodes[i].attributes.comm;
            temp.xTxt = noeudImage.childNodes[i].attributes.xTxt;
            temp.yTxt = noeudImage.childNodes[i].attributes.yTxt;
            images.push(temp);
        }
        for (var i:Number = 0; i<noeudParam.childNodes.length; i++){
            var temp:Object = new Object();
            temp.valeur = noeudParam.childNodes[i].attributes.valeur;
            temp.comm = noeudParam.childNodes[i].attributes.comm;
            param.push(temp);
        }
        imageInit();
    }
}

imageInit = function(){
    if((param[0].valeur == "true")|(param[0].valeur == undefined)){
        imageActu = randomNum(0, images.length-1);
        imageNext = randomNum(0, images.length-1);
        imageRandom();
    }else{
        imageActu = 0;
        imageNormal();
    }
    if(param[1].valeur != undefined){timeStart = param[1].valeur;}
    if(param[2].valeur != undefined){timeBetween = param[2].valeur;}
    mcl1.loadClip(images[imageActu].titre, conteneur1);
    mcl2.loadClip(images[imageNext].titre, conteneur2);
}

mclListener1.onLoadComplete = function(target:MovieClip):Void {
    image1 = true;
    if(init){
        if(image2){
        init = false;
        interImage = setInterval(_root,"imageSwap",timeStart);
        }
    }else{
        conteneur2.swapDepths(conteneur1);
        mcl2.loadClip(images[imageNext].titre, conteneur2);
    }
}

mclListener2.onLoadComplete = function(target:MovieClip):Void {
    image2 = true;
    if(init){
        if(image1){
        init = false;
        interImage = setInterval(_root,"imageSwap",timeStart);
        }
    }else{
        interImage = setInterval(_root,"imageSwap",timeBetween);
    }
}

imageSwap = function(){
clearInterval(interImage);interAlpha = setInterval(this,"imageAlpha",6);}

imageAlpha = function(){
    if(val_alpha < 100){
        conteneur1._alpha = (100-val_alpha);
        conteneur2._alpha = val_alpha;
        val_alpha += 1;
    }
    else{
        clearInterval(interAlpha);
        val_alpha = 0;
        imageActu = imageNext;
        if(param[0].valeur == "true"){
            imageRandom();
        }else{
            imageNormal();
        }
        conteneur1.swapDepths(conteneur2);
        conteneur1._alpha = 100;
        mcl1.loadClip(images[imageActu].titre, conteneur1);
    }
}

imageRandom = function(){while(imageActu imageNext){imageNext randomNum(0, images.length-1);}}

imageNormal = function(){if(imageActu images.length-1){imageNext 0;}else{imageNext = imageActu+1;}}

randomNum = function(min:Number, max:Number):Number{
var num:Number = Math.floor(Math.random() * (max - min + 1)) + min;return num;}

Un ligne spécifie le fichier xml à charger (je l'ai renommé en txt comme ça, mais ça ne gene en rien le flash...)
diapo.load("upload/lesimagesMenu1.txt");

il faudrait genre avoir ce genre de truc :

on (release) {
diapo.load("upload/lesimagesMenu2.txt");

}

Enfin lui donner une autre référence quoi...
Quelqu'un saurait ffaire de ce genre de truc, je me retrouve coincé de chez coincé là .

Merci de votre aide !!!!

4 réponses

latour500 Messages postés 63 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 10 décembre 2009
29 juin 2009 à 19:18
bonjour,

Je t'explique en gros comment je ferais moi sans m'occuper des boutons pour l'instant

le chargement de l'xml je le définirais en fonction du genre:

function Chargement_xml (Nom_du_fichier) <----- variable à passer dans ta fonction quand elle est appellée

{var diapo:XML = new XML();
diapo.ignoreWhite = true;
diapo.load(Nom_du_fichier);
.......

}

en faite la premiere fois tu appelles ta fonction de chargement xml comme ça -->
Nom_du_fichier = "upload/lesimagesMenu1.txt"
Chargement_xml ( Nom_du_fichier); <----- la fonction va être executée

puis quand t'appuis sur un bouton

Nom_du_fichier = "upload/lesimagesMenu2.txt"

Chargement_xml ( Nom_du_fichier); <----- la fonction va être executée

enfin de ce genre quoi, à verfier avec les variables comment ça se comporte evidemment puis
pour l'affichage mais ça te donne déja au moins une idée d'une méthode (il y en a certainement d'autre )

Bon courage
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
30 juin 2009 à 09:40
Je pense avoir compris le principe, j'essais de me construire un exemple mais c pas évident :/, je zieute sur le net... à moins que tu n'ai un exemple fonctionnel?
0
latour500 Messages postés 63 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 10 décembre 2009
30 juin 2009 à 09:50
Bonjour,

Non je n'ai rien de fonctionnel, mais en cherchant un peu, je pense que tu vas y arrivé,
déja si tu sais faire des comportements par rapport à l'appui d'un bouton apres c pas
trop compliqué.

Monbouton.onRelease = function () {
Nom_du_fichier = "upload/lesimagesMenu2.txt"
Chargement_xml ( Nom_du_fichier);

}

Si t'a un soucis avec la variable Nom_du_fichier tu peux la passer en _global lors de la déclaration
si tu maitrise pas trop les 'function' essaye de chercher de comment ça marche, ça te permettra d'en créées par la suite tu verras c'est tres pratique.

Bon courage
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
30 juin 2009 à 10:33
Merci de ton aide, je continue mes bidouilles pour arriver à un résultat qui tue :)...
0
Rejoignez-nous