Bonjour !! Ca faisait longtemps .... 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 :
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 : 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 // 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);
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.
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 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); }
Partager