Bonjour le forum,
J'ai un petit soucis avec Flash 8 dont je n'ai pas trouvé la solution sur internet...
Je programme le système de sauvegardes d'un jeu. Je souhaite créer 3 sauvegardes possibles : j'ai donc créé un sharedObject qui est un tableau d'enregistrements, chaque ligne contenant les données d'une sauvegarde.
Code ActionScript :
_root.sauvegarde.data.Jeu = new Array(4);
for(i=1;i<4;i++)
{_root.sauvegarde.data.Jeu[i]=new Object;}
(en fait le tableau fait 4 lignes parce que je n'utilise pas la ligne zéro, pour une raison de clarté de numérotation)
Donc, quand je sauvegarde sur la piste 2, je fais tout simplement :
Code ActionScript :
_root.sauvegarde.data.Jeu[2]=_root.Jeu;
_root.sauvegarde.flush();
(_root.Jeu est l'enregistrement de toutes les variables qui stockent la progression dans le jeu, il contient donc des données de plusieurs sortes : Number, String, Array)
Si c'est la première fois que je sauvegarde, on obtiendra, pour chaque variable, sur les différentes lignes :
Code ActionScript :
undefined
"valeur 2"
undefined
Pour l'instant tout marche parfaitement.
Si ensuite quelques temps plus tard je sauvegarde sur la piste 3, même manipulation :
Code ActionScript :
_root.sauvegarde.data.Jeu[3]=_root.Jeu;
_root.sauvegarde.flush();
Mais là, ô stupeur : toutes les valeurs de la 2ème sauvegarde ont été changées. Pour chaque objet, on obtient sur les différentes lignes :
Code ActionScript :
undefined
"valeur 3"
"valeur 3"
En fait le code su comporte comme si les variables des objets sauvegardés étaient passées
par référence et non par valeur : toute modification ultérieure d'une variable du jeu affecte toutes les sauvegardes (toutes les lignes de l'Array sharedObject).
Je n'arrive pas à passer ces variables par valeur... Comment faire ? Merci pour votre aide !