slog9
Messages postés34Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention24 octobre 2009
-
15 oct. 2009 à 02:34
slog9
Messages postés34Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention24 octobre 2009
-
24 oct. 2009 à 12:26
Bonjour à tous!
Je suis en train de coder un petit jeu tout con, histoire de mettre les mains dans l'as3... J'ai donc créé des classes associées à des MovieClip, etc, et tout fonctionne à peu près bien, sauf que...
Dans ma classe principale j'ai donc un tableau initialisé par le constructeur et qui contient la configuration initiale de la map. je crée ensuite le jeu en lui passant en paramètre le tableau pour qu'il construise la map et modifie certaines cases en fonction du nombre, mais lorsque je supprime l'instance de l'objet jeu pour en créer un nouveau, je me rends compte que mon tableau contenant les paramètres initiaux a été modifié...
J'ai dû rater quelque chose quelque part, est-ce normal? comment faire pour ne pas qu'il modifie le tableau original?
Un peu de code sera peu être plus parlant (j'ai simplifié au maximum):
//-----------------------------------------------
// class Main:
//-----------------------------------------------
private var map1:Array;
private var game:Game;
public function Main(){
this.map1 = new Array([0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]);
this.loadGame();
}
private function loadGame(){
this.game = new Game();
this.game.setMap(this.map1);
trace(this.map1);
//Renvoie le tableau Array([1,0,0,1], ?????
// [0,0,0,0], ?????
// [0,0,0,0], ?????
// [1,0,0,1]) ?????
}
//-----------------------------------------------
// class Game:
//-----------------------------------------------
private var maps:Array;
public function Game(){
}
public function setMap(themap:Array){
this.maps = themap;
this.maps[0][0] = 1;
this.maps[0][3] = 1;
this.maps[3][0] = 1;
this.maps[3][3] = 1;
}
//-----------------------------------------------
Pourquoi est-ce qu'il modifie aussi le map1 de l'objet parent
j'ai essayé de jouer avec public et private, mais sans resultat... Ca doit être un truc tout con, comme d'hab, mais jtrouve pas...
slog9
Messages postés34Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention24 octobre 2009 23 oct. 2009 à 22:54
Salut!
Merci pour cette précision (et désolé de pas avoir répondu plus tôt, manque de temps...)
Je vais me renseigner sur le sujet. Du coup aurais tu une astuce pour pouvoir passer un tableau en paramètre tel que je le souhaite? ou une autre solution?
Je vais tester la duplication du tableau en le listant et en copiant chaque valeur à l'aide de boucles for, mais doit y avoir quelque chose d'autre, ça me semble un peu lourd comme traitement...
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 24 oct. 2009 à 00:36
Salut,
Pour ne pas modifier le tableau, cree une copie avant de la passer en parametre.
example:
var monTableau:Array = Array([]);
var maCopieTableau = monTableau.concat();
/*en modifiant maCopieTableau , monTableau reste intact. Tu peux donc utiliser cette seconde variable et la passer en parametre*/