Problème de logique mathématique dans mon script

way2web Messages postés 65 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 17 mars 2011 - 24 mai 2007 à 10:13
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 - 24 mai 2007 à 15:25
Bonjour,

Moi et les maths on fait 2 ;)
Ca fait quelques heures que je galère sur ce script, je vous explique :

j'ai une galerie photo miniatures avec un bouton de navigation de part et d'autre (next et back) qui montrent respectivement chaque fois les 4 images précédentes ou suivantes, les boutons déclenchent ma fonction showThumbails en lui transmettant une variable index de 4 ou -4 en fonction du sens de navigation.

bouton back
on (release) 
{
    showThumbails(-4,_root.theyear);
}


et
bouton next

on(release) 
{ 
   showThumbails(4,_root.theyear);
} 


la valeur _root.theyear me permettant de me répérer dans les différentes galeries

voici ma fonction :


var index:Number = 0;
var nombre:Number = 0;

function showThumbails(index,year:String):Void {
    _root.theyear = year;
    var MovieDepthCounter:Number = 10;
    var photoHolder:MovieClip;
    var xPos:Number;
    var yPos:Number = 20;
    var photoThumb:String;
    nombre+= index;
    trace(nombre);    
    
    for (var i:Number = 0; i<RootNode.childNodes.length; i++) 
    {
        
        if (RootNode.childNodes[i].attributes.year == year) 
        {
            var CategoryXML:XMLNode = RootNode.childNodes[i];
            TotalPhotos = CategoryXML.childNodes.length;
            trace(year+" has "+TotalPhotos+" photos");
            
                if (((nombre+4)/4) >= Math.ceil(TotalPhotos/4)) 
                {
                    //pr empêcher d'aller en avant qd on est à la dernière photo
                    Next_btn.enabled = false;
                    nombre=0;
                                        
                } 
                
                else 
                {
                    Next_btn.enabled = true;
                }
                
                if (nombre == 0) 
                {
                    //pr empêcher d'aller en arrière qd on est à la première photo
                    Previous_btn.enabled = false;
                    Next_btn.enabled = true;
                } 
                else 
                {
                    Previous_btn.enabled = true;
                }
            
            
    
            for (var j:Number = 0; j<4; j++) {
                photoThumb = CategoryXML.childNodes[j+nombre].childNodes[1].firstChild.nodeValue;
                //photoThumb = "http://www.webdesign-4u.be/web-4u/images/portfolio/pictures/2003/botybenelux.jpg";
                //trace(photoThumb);
                photoHolder = this.createEmptyMovieClip("photoHolder"+j, MovieDepthCounter);
                //trace(photoHolder);
                xPos = 30+65*j;
                photoHolder._x = xPos;
                photoHolder._y = yPos;
                var photoHolderLoader:MovieClipLoader = new MovieClipLoader();
                photoHolderLoader.loadClip(photoThumb, photoHolder);
                MovieDepthCounter++;
            }
        }
    }
    //fin du for
}
//fin de la fonction showThumbails


dans ma galerie 1 j'ai 23 images, dans la 2ème 17, dans la 3ème 15 et dans la dernière 4. J'ai réussi à regler le bouton back correctement de manière à ce qu'il ne soit pas possible d'aller en arrière quand on est à la première photo.
Maintenant j'aimerais limiter le bouton nexquand on est sur la dernière photo et quand on clique sur une autre année la variable nombre doit être reinitialisée pour que la navigation démarre bien à la première image de la galerie correspondante !  J'ai tenté tout ça dans les if mais je n'arrive pas à trouver la formule mathématique qui me permet de bloquer le bouton next quelque soit le nombre d'images dans la galerie !

Merci d'avance  pour votre aide !!

3 réponses

cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
24 mai 2007 à 14:47
Que dirais-tu de remplacer ça:
if (((nombre+4)/4) >= Math.ceil(TotalPhotos/4))

par:
if (nombre > (TotalPhotos-4)){
    //Bouton next enabled=false;
}

@+! Samy
0
way2web Messages postés 65 Date d'inscription jeudi 17 mars 2011 Statut Membre Dernière intervention 17 mars 2011
24 mai 2007 à 15:12
J'ai essayé ça empêche d'afficher les dernières photos ex :
sur ma galerie comportant 23 photos on va jusqu'à la vingtième et puis on se retrouve à la première !

sur celle qui en comporte que 5 on ne voit que les 4 premières et on ne sait pas voir la dernière !
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
24 mai 2007 à 15:25
j'avais pas vu que nombre était initialisé à 0...à ce moment là, il faut tester (nombre+1) > (TotalPhotos-4)
0
Rejoignez-nous