Bonjour

Bon voilà mon problème. Le code suivant me permet d'afficher des vignettes dans un ScrollPane et pour chaque vignette sur laquelle la souris se promène, j'affiche l'image grand format dans un Loader. Jusque là tout va bien. Le hic c'est que lorsque j'affiche en premier lieu un certain nombre de vignettes correspondant à la selection d'un répertoire via une Liste et qu'ensuite je sélectionne un répertoire comportant un nombre de vignettes moins important que le précédent, j'ai bien les vignettes en question dans mon scrollpane, mais j'ai EN PLUS les vignettes correspondantes à la sélection précédente. Pas clair ? Ok .. Essayez sur www.soblunk.fr, option 'Les concerts' dans la barre de menu , puis 'Les Photos', commencez par le bas de la liste et ensuite choisissez 'Le Havanas's Pub'

Le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
stop();
System.security.allowDomain("<a href="http://www.soblunk.fr" target="_blank">www.soblunk.fr</a>");
var diaporama:MovieClip;
var hauteur_vignette:Number = 75;
var espace:Number = 5;
visioneuse.scaleContent = true;
this.createClassObject(mx.containers.ScrollPane, "scrollPane", 0);
scrollPane.move(65, 104);
scrollPane.setSize(115, 465);
function init() { 
 scrollPane.contentPath = "mainclip"; 
 diaporama = scrollPane.content;
} 
 
init(); 
/*
 * Récupération des dates de concerts sur le serveur
 * --------------------------------------------------
*/
var XmlData:XML = new XML();
XmlData.ignoreWhite = true;
XmlData.load(Xml_Server + "concerts.xml");
XmlData.onLoad = function(check:Boolean):Void {
 if(check)
  {
  var Node = XmlData.firstChild;
  var nbrItems:Number = Node.childNodes.length;
  for(var i:Number = 0; i < nbrItems; i++)
   Liste_Concerts.addItemAt(i, Node.childNodes[i].attributes.date + " - " + Node.childNodes[i].attributes.lieu);
  }
 else
  status_line.text = "Erreur de transmission des données !!!"; 
}
/*
 * Définition d'un écouteur sur la liste des concerts
 * --------------------------------------------------
*/
var concertsListener:Object = new Object();
concertsListener.change = function(evt_obj:Object)  {
 visioneuse.contentPath = "";
 _GetConcertPictures(evt_obj.target.selectedItem.label);
}
Liste_Concerts.addEventListener("change", concertsListener);
function _GetConcertPictures(datec:String):Void {
 /*
   * Récupération du nombre et des noms des images pour le concert choisi
   * --------------------------------------------------------------------
 */
 var phpPictures:LoadVars = new LoadVars();
 var dayConcert:String = datec.substr(0,2);
    var monthConcert:String = datec.substr(3,2); 
    var yearConcert:String = datec.substr(6,4);
 var dateConcert:String = dayConcert + monthConcert + yearConcert;
    var picturesArray:Array = new Array();
 
 phpPictures.onLoad = function(check2:Boolean) {
  if(check2) {
          if(this.total != 0) { 
           Title_txt.text = "Choisir une date dans la liste ci-dessous";
        for(var i:Number = 0; i < this.total; i++) {        
                       picturesArray.push(this["picture" + i]);    
           }
        _ShowPictures(dateConcert, picturesArray);
       } else {
        Title_txt.text = "Désolé, pas de photos pour ce concert";        
              }
  } else  {
    Title_txt.text = "Erreur de transmission des données !!!";
    } 
 }
 phpPictures.datec = dateConcert;
 phpPictures.sendAndLoad(Scripts_Server + "getconcertspictures.php", phpPictures, "GET");  
}
function _ShowPictures(datec:String, picturesArray:Array):Void {
 var ypos:Number = 0; 
 var imgSrc = Images_Server + "soblunk/concerts/" + datec ;
 for(i = 0; i < picturesArray.length; i++) {
  var mc = diaporama.createEmptyMovieClip("photo"+i, i);
  mc._y = i + ypos;
  mc.createEmptyMovieClip("conteneur", 0 );
  mc.conteneur.createEmptyMovieClip("image", 0);
  mc.conteneur.image.loadMovie(imgSrc + "/" + picturesArray[i] + ".png");
  mc.image = imgSrc + "/" +  picturesArray[i] +  ".jpg";  
     ypos+= hauteur_vignette + espace;
     mc.nombre = i;
 
  if(i == 0) {  
   visioneuse.contentPath = mc.image; 
  }
 
  mc.onRollOver = function() {
   scrollPane.invalidate();
   visioneuse.contentPath = this.image; 
  } 
 }
}
/*
 * Retour au menu principal 
 * ------------------------
*/
this.gobackBtn.onRelease = function() {
    destroyObject("diaporama");
 gotoAndPlay("Debut");
}
Voilà, je pense qu'à un moment donné je devrais nettoyer quelque chose, mais je ne vois pas où et quand. A votre bon coeur m'ssieurs dames