Une boucle pour associer X actions à X checkbox
Bonjour !! Ca faisait longtemps .... :oops: Alors voici mon problème du jour. Imaginez ma scène : dessus j'ai un clip "carte" dans lequel je charge 19 fichiers swf externe gràce à une boucle et ce que j'ai appris ici il y a quelques semaines. Chaque fichier est contenu dans un clip nommé "conteneur_1", "conteneur_2", "conteneur_3" ... Comme ça :
Code:
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
| // ICI ON EST DANS LE CLIP "CARTE"
var nbreCouchesLoad:Number = 19;
var nomCouches:Array = ["fond", "r_feu_foret", "zone_industrielle", "pop_continu", "pop_discontinu", "r_inondation_faible", "r_inondation_moyen", "r_inondation_fort", "r_ruissellement", "r_tmd", "r_chute_blocs", "r_glissement", "r_industriel", "cadastre", "eau_secondaire", "eau_principal", "route_secondaire", "route_nationale", "voie_ferree"];
var carteL0:Number = this._width;
var carteH0:Number = this._height;
function load(aIndex:Number) {
var tmp:MovieClip = this.createEmptyMovieClip("conteneur_"+aIndex, this.getNextHighestDepth());
var listener:Object = new Object();
listener.onLoadInit = initialisation;
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(listener);
var fileName:String = "couches/"+ nomCouches[aIndex] +".swf";
mcl.loadClip(fileName, tmp);
}
function initialisation(aTarget:MovieClip) {
var currentIndex:Number = Number(aTarget._name.split("_")[1]);
if (currentIndex<nbreCouchesLoad-1) {
load(currentIndex+1)
}
aTarget._x = (0-(carteL0/2))+((carteL0-aTarget._width)/2);
aTarget._y = (0-(carteH0/2))+((carteH0-aTarget._height)/2);
}
load(0); |
Sur ma scène, j'ai aussi un clip "couches" qui contient un autre clip scrollable "txtscroll" dans lequel j'ai disposé 19 checkbox nommées "checkbox1", "checkbox2", "checkbox3" ... vous suivez ? Sur mon calque d'action, j'essaye de faire en sorte qu'1 checkbox X soit assigné à une couche X, pour qu'en cochant ça affiche la couche, et en décochant ça la masque. Pour ça, j'ai fait une boucle dans laquelle j'assigne un indice à chaque checkbox pour pouvoir effectuer une action différente en fonction de l'indice. Comme ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| for(var i=1 ;i<19 ; i++){
var chkbox = this.couches.txtscroll["checkbox"+i];
chkbox.indice = i;
var listener2 = new Object();
listener2.click = function(evt){
if (chkbox.selected) {
//_root.carte["conteneur_"+i]._visible = true;
trace("OUI : "+ chkbox)
} else {
//_root.carte["conteneur_"+i]._visible = false;
trace("NON : " + chkbox)
}
}
chkbox.addEventListener("click",listener2);
} |
Le soucis est donc que ça ne fonctionne pas. Mon trace m'indique que le chkbox est "_level0.couches.txtscroll.checkbox18", quelle que soit la checkbox que je coche. Je ne vois pas THE solution !! Ou bien faut-il faire un listener différent pour chaque checkbox ? Mais comment ? Merci d'avance ... encore. :P