Centrer image au bon moment - Diaporama Flash

cs_fluf Messages postés 4 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 1 mai 2009 - 1 mai 2009 à 18:58
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 1 mai 2009 à 23:24
Bonjour,

J'ai récupéré le code de HiltOn ( http://www.flashkod.com/codes/DIAPORAMA-XML-AVEC-FONDU_41950.aspx      merci HiltOn ) pour réaliser un diaporama avec changement automatique des images et Fade In Fade Out pour les transitions.
Mais j'aimerai que les images soient centrées au milieu de la scène. que ce soit pendant le Fade In, pendant le Fade Out et entre les deux. Avec des images plus petites que la scène ça fonctionne mais lorsque l'image est plus grande que la scène ça ne fonctionne pas...
Je précise que je suis un newb en Actionscript...
Donc ma question c'est : quand dois-je coder le centrage des images ?
Voici le code :

---------------------------------------

Stage.scaleMode = "noScale";
Stage.align = "TL";
//Création des variables
var images:Array = new Array();
var param:Array = new Array();
var imageActu:Number;
var imageNext:Number;
var annee:Date = new Date();
//Viariables des intervals
var interAlpha:Number;
var interImage:Number;
var interTest:Number;
//Temps de pause par défaut
var timeStart:Number = 1000;
var timeBetween:Number = 500;
//Variable pour la transition alpha
var val_alpha:Number = 0;
//Création des flags
var image1:Boolean = false;
var image2:Boolean = false;
var init:Boolean = true;

//Calcul le centre de la scène
var x_centre_cadre:Number = (Stage.width/2);
var y_centre_cadre:Number = (Stage.height/2);   

//MovieClip Conteneur1
var conteneur1:MovieClip = this.createEmptyMovieClip("conteneur1", 2);
var mclListener1:Object = new Object();
var mcl1:MovieClipLoader = new MovieClipLoader();
mcl1.addListener(mclListener1);
//MovieClip Conteneur2
var conteneur2:MovieClip = this.createEmptyMovieClip("conteneur2", 1);
var mclListener2:Object = new Object();
var mcl2:MovieClipLoader = new MovieClipLoader();
mcl2.addListener(mclListener2);   

//Création d'un nouveau menu contextuel
var rootMenu = new ContextMenu();
rootMenu.hideBuiltInItems();
var rootMenuItem = new ContextMenuItem("© "+annee.getFullYear()+" Yannick Lanz", email);
rootMenu.customItems.push(rootMenuItem);
_root.menu = rootMenu;

//Chargement du fichier XML contenant la liste des photos
var diapo:XML = new XML();
diapo.ignoreWhite = true;
diapo.load("diapo.xml");
//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;
}

---------------------------------------
       

Pour centrer j'ai essayé d'utiliser ce bout de code à différents endroits dans le code ci-dessus. sans succès.

---------------------------------------

        //on centre l'image en x
        conteneur1._x = x_centre_cadre - (conteneur1._width/2);
        //on centre l'image en y   
        conteneur1._y = y_centre_cadre - (conteneur1._height/2);
        //on centre l'image en x
        conteneur2._x = x_centre_cadre - (conteneur2._width/2);
        //on centre l'image en y   
        conteneur2._y = y_centre_cadre - (conteneur2._height/2);

---------------------------------------
 
Sachant que :

var x_centre_cadre:Number = (Stage.width/2);
var y_centre_cadre:Number = (Stage.height/2);   

Merci beaucoup pour votre aide.

1 réponse

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
1 mai 2009 à 23:24
Bonsoir,

Je remarque que tu n'as pas posé la question sur la source. L'auteur étant le plus à même de te répondre ...

Peg'
0
Rejoignez-nous