salut a tous
C'est la premiere fois que je participe a un forum alors si qqch cloche n'esitez pas a me le faire remarquer..
j'ai un probleme avec actionscript2.
j'ai un tableau deux dimention qui stoque des movieclip. Quand je veux les suprimer j'utilise une fonction decharge avec les coordonnees x et y de la case du tableau qui fait un removeMovieClip.
Le probleme est le suivant : une fois le terrain affiché,
trace (tabTerrain[b][a].getDepth());
ainsi que tabTerrain[b][a].removeMovieClip();
ne fonctionnent que pour ma derniere ligne de sorte que seul les cases du bas de mon terrain sont effacable..
Ca fait un momment que ca me gonfle alors qi vous avez une idee je suis preneur..
le code :
CLASSE Terrain2
class Terrain2 {
//*************************** proprietes **************************************
private var matrice:Array = new Array();
private var tabTerrain:Array = new Array();
private var espac:Number = 6; //espacement entre les cases
private var dispo:Number = 50; //disposition par rapport a l'origine
private var x:Number=0; //definition de x pour la boucle for
private var y:Number=0; //definition de y pour la boucle for
private var i:Number=0; //definition de i pour la boucle for
private var j:Number=0; //definition de j pour la boucle for
private var ligne:Array= new Array(); //tableau qui sert a faire un tabTerrain a 2 dimentions
private var denomination:String = ""; //denomination des cases
private var numero:Number = 10; //numero de decalage des cases
//**************************** constructeur ************************************
public function Terrain2(tab:Array){
matrice = tab;
trace("appel du constructeur");
createTabloVide();
}
//**************************** methodes ****************************************
private function createTabloVide():Void{
trace ("fonction createTabloVide");
//ligne=[];
for (i=0;i<getHauteur();i++){
for(j=0;j<getLongeur(i);j++){
//ligne.push("");
ligne.push(0);
}
tabTerrain.push(ligne);
}
}
public function getLongeur(x:Number):Number{
return matrice[x].length;
}
public function getHauteur():Number{
return matrice.length;
}
public function traceTerrain():Void{
for (y=0; y < getHauteur(); y++){
//trace("les y: " + y);
for (x=0; x < getLongeur(y); x++){
//trace("les x: " + x);
//trace("valeurs : " + matrice[y][x]);
denomination = x + "," + y;
numero++;
if (matrice[y][x] == 1){
tabTerrain[y][x] = _root.attachMovie("eau", "eau" + denomination, numero);
tabTerrain[y][x]._x = dispo + espac * x;
tabTerrain[y][x]._y = dispo + espac * y;
trace("un carré bleu : " + denomination + " décalage numéro : " + numero);
}else if(matrice[y][x] == 0){
tabTerrain[y][x] = _root.attachMovie("terre", "terre" + denomination, numero);
tabTerrain[y][x]._x = dispo + espac * x;
tabTerrain[y][x]._y = dispo + espac * y;
trace("un carré noir : " + denomination + " décalage numéro : " + numero);
}
trace(tabTerrain[y][x].getDepth());
}
trace(tabTerrain[y][x].getDepth());
}
trace(tabTerrain[2][6].getDepth());
trace(tabTerrain[10][5].getDepth());
trace(tabTerrain[1][15].getDepth());
trace(tabTerrain[14][3].getDepth());
}
public function decharge(a:Number, b:Number):Void{
trace("decharge");
trace(a);
trace(b);
trace (tabTerrain[b][a].getDepth());
tabTerrain[b][a].removeMovieClip();
}
}
UTILISATION :
var matrice1 = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]];
var Ter1:Terrain2 = new Terrain2(matrice1);
Ter1.traceTerrain();
Ter1.decharge(1,3); // la fonction decharge trouve bien la profondeur (^m si c'est pas la bonne)
Ter1.decharge(1,2); // mais apres puiske les indices sont tous sur la même ligne j'ai plus que des undefined avec getDepth
Ter1.decharge(1,4);
Ter1.decharge(1,3);
Ter1.decharge(12,11);