begin process at 2012 05 27 08:13:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Flash

 > 

Archives

 > 

ActionScript

 > 

problème avec un tableau de tableaux à 2 dimensions


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème avec un tableau de tableaux à 2 dimensions

dimanche 4 septembre 2005 à 10:54:02 | problème avec un tableau de tableaux à 2 dimensions

Gougoul

Bonjour,
j'expose mon cas:
Je crée un tableau(A) qui doit recevoir comme élément un tableau(B) à deux dimensions.
à chaque itération, le tableau A reçoit bien le tableau B ( A.length() augmente bien à chaque fois),  Le dernier élément du tableau  A  est  bien  le  contenu  du tableau B.
Le tableau A doit me servir de mémoire de l'évolution du tableau B et le problème que je rencontre est que tous les éléments du tableau A prennent le contenu du dernier élément entré.
voici le code utilisé:

1)function fA(stockage,i){ 
/*i est  incrémenté depuis la fonction appelante et stockage prend la valeur de B*/

2)            A[i]=stockage;

3)}

4)

5)if(!A){

6)         A=new Array();   //

7)A[0]=B; 

8)}

J'utilise FlashMX .
Si quelqu'un voit ce qui cause mon problème ou connait la cause du problème, les suggestions et les solutions sont la bien venues.
si mon exposé n'est pas clair, n'hésitez pas à demander des éclaircissements.
merci d'avance.


mardi 6 septembre 2005 à 10:37:08 | Re : problème avec un tableau de tableaux à 2 dimensions

Crazyx

J'ai pas bien saisi ce que tu tente de faire, surement parce que je suis débutant. Mais bon puisque personne ne répond a ce post, je me lance dans une tentative suicide :p

Tout ce que j'ai compris, c'est que tu tente de sauvegarder le contenu du TABLEAU B dans un TABLEAU A , afin de suivre la dernière modification effectué. Si c'est bien ca ce que tu souhaite faire, je crois que tu te complique la tache. Je pense, de mémoire sans être vraiment sur, que si que B est un tableau et que tu fais A = B; flash crée un tableau A exactement pareil que B. Il te suffit donc de mettre ca au début de ta fonction qui appelle la modification de B, pour avoir A qui correspond à l'etat précédent de B.

Si ce n'est pas cela que tu souhaite, expose un peu plus ton problème peut être que je pourrai t'aider.

crazYx

mercredi 7 septembre 2005 à 10:27:22 | Re : problème avec un tableau de tableaux à 2 dimensions

Gougoul

Bonjour crazYx,
J'ai compris d'où venait le problème(sans pouvoir le résoudre)
je vais essayer de t'expliquer un peu mieux la situation.
B est un tableau de tableaux (une matrice) qui au fur et à mesure de l'avancement du programme va se voir modifier l'un de ses éléments.
A la fin du programme je veux pouvoir repasser en revue toute les modifications, donc je crée un tableau A[i] qui va recevoir le tableau B à chacune de ses modifications, l'indice i est évidement incrémenté  à chaque fois.
lorsque je fais A[i] = B , ce ne sont pas des valeurs de B qui sont transmises à A mais des réfèrences ce qui fait que le tableau A ne contient que des références et sera toujours égal au dernier état de B==> donc plus aucune trace des états précédents.
ex: tu peux le tester dans flash
//DEBUT
L1=new Array("fruit","légume","etc...");
L2=new Array("rien","rien","rien");
tMatrice=new Array(L1,L2);

tRecepteur= new Array();
//tRecepteur reçoit l'état initial de tMatrice à son 1er élément
tRecepteur[0]= tMatrice; //
trace("j'affiche le contenu de tRecepteur indice 0 ==> "+tRecepteur[0]);
//je modifie le contenu de tMatrice (1ere modification)
tMatrice[0][0]="rien";
tMatrice[1][0]="fruit";
//je vérifie le changement dans tMatrice
trace("tMatrice après changement => "+tMatrice);
//et je constate les "dégats" dans tRecepteur
trace("j'affiche tRecepteur sans changement => "+tRecepteur);
//malgré le changement uniquement dans tMatrice, tRécepteur est affecté
//aussi
//tRecepteur reçoit l'état de tMatrice après changement à son 2eme élément
tRecepteur[1]=tMatrice;
//
trace("tRecepteur[0] => "+tRecepteur[0]);
trace("tRecepteur[1] => "+tRecepteur[1]);
//tRecepteur[0] = tRecepteur[1]
//FIN
Dans cet exemple tRecepteur reste toujours égal à tMatrice même si l'indice de tRecepteur change.
Le problème est là, comment faire pour modifier tMatrice sans affecter tRecepteur ou comment transmettre par valeur et pas par référence?
Est-ce que cela semble plus clair?
cordialement
jeudi 8 septembre 2005 à 11:21:40 | Re : problème avec un tableau de tableaux à 2 dimensions

Crazyx

C'est pense que c'est plus clair j'ai lu en diagonale pour l'instant je lance flash je regarde et je te dis si je vois une issue a ce problème ...
A tout de suite

cx
jeudi 8 septembre 2005 à 13:10:04 | Re : problème avec un tableau de tableaux à 2 dimensions

Crazyx

J'avoue que c'es du bidouillage ce que j'ai fait , mais en fait tu créer un tableau a deux dimensions qui contient un tableau a deux dimensions et donc a partir de la ca dreraille au niveau des appels et des attributions de valeurs qui se mettent en "colonnes" au lieu de ce mettre en " ligne" donc  en fait pour ton exemple la solution (bidouillage, bidouillage) que j'ai trouvé pour que ca marche c'est ca : 

//DEBUT
L1=new Array("fruit","légume","etc...");
L2=new Array("rien","rien","rien");
tMatrice=new Array(L1,L2);

tRecepteur= new Array();
//tRecepteur reçoit l'état initial de tMatrice à son 1er élément
tRecepteur[0]= tMatrice[0] + "," + tMatrice[1];//
trace("j'affiche le contenu de tRecepteur indice 0 ==> "+tRecepteur[0]);
//je modifie le contenu de tMatrice (1ere modification)
tMatrice[0][0]="rien";
tMatrice[1][0]="banane";
//je vérifie le changement dans tMatrice
trace("tMatrice après changement => "+tMatrice);
//et je constate les "dégats" dans tRecepteur
trace("j'affiche tRecepteur sans changement => "+tRecepteur);

//FIN
 

cx

jeudi 8 septembre 2005 à 14:09:13 | Re : problème avec un tableau de tableaux à 2 dimensions

Crazyx

Je corrige, en fait les valeurs des tableaux se mettent en ligne et pas en colonne
donc essaie et la ca marche... si tu veux envoie moi ton code en entier je te corrige ca ...


crazYx
mercredi 28 septembre 2005 à 10:31:31 | Re : problème avec un tableau de tableaux à 2 dimensions

Gougoul

bonjour crazyx,
J'ai laissé le sujet un petit peu  de côté, et j'y revient avec la solution.
J'ai fini par trouver la méthode qui permet de passer des arguments par valeurs et non plus par références, ce qui causait mon problème.
la méthode à utiliser est slice().
je donne cette fois-ci un exemple avec des tableaux simples (les tableaux à deux dimmensions compliquaient la situation), et tu comprendra où était mon problème.

//DEBUT
t_tableau = new Array(1,2,3);
trace(t_tableau);
t_tableau_bis = t_tableau;
trace("=====================");
trace("t_tableau = "+t_tableau);
trace("t_tableau_bis = "+t_tableau_bis);
trace("=====================");
trace("En modifiant un élément de t_tableau, t_tableau_bis");
trace("est modifié aussi");
trace("t_tableau[1] = 5;");

t_tableau[1] = 5;

trace("t_tableau = "+t_tableau);
trace("t_tableau_bis = "+t_tableau_bis);    // le problème se situe là
trace("=====================");
trace("grâce à slice(), je peux faire passer les valeurs ");
trace("d'un tableau sans utiliser les références");

t_tableau_ter = t_tableau.slice(0);

trace("je modifie un élément de t_tableau et t_tableau_ter");
trace("n'est plus modifié");
trace("t_tableau[1] = 10;");

t_tableau[1] = 10;

trace("t_tableau = "+t_tableau);
trace("t_tableau_ter = "+t_tableau_ter); //le problème est résolu
//FIN

encore merci pour l'intérêt que tu m'as  porté .


Cette discussion est classée dans : problème, élément, tableau, dimensions, stockage


Répondre à ce message

Sujets en rapport avec ce message

Problème d'animation [ par AlexiaC ] Bonsoir,Je suis débutante et j'aurai aimé réaliser une animation.Voila mon problème :J'ai un tableau. Je voudrai lancer une action (une animation en f déplacement d'un élément selon un autre élément [ par Petitefievel ] Bonjour à tous, Je vais tenter de vous expliquer mon problème. Voilà je suis en train de faire un site en flash un peu complexe, le but est d'avoir un tableau a plusieurs dimensions [ par lilyvirus ] avec les tableauw on peux faire tout bettement     answer= new Array();     answer[0]="coucou"     trace(answer[0]); Mais n'y a t'il pas possibilite Array et suppression d'élément [ par inaden ] Bonjour,voila, j'ai un tableau (array) qui s'appelle diag, un nombre aléatoire qui s'appelle sorti. J'ai essayé de virer l'élément du tableau correspo Problème mémoire [ par carton99 ] Bonjour, j'ai manifestement un problème de mémoire du à un tableau trop grand . voici le code erreur; code: Member function onLoad is larger than 32K. Tableau à 2 dimensions [ par kri ] bonjour,Je voudrais faire une matrice, par exemple une matrice 4*4 qui contient les entiers de 1 à 16.J'ai essayé le code suivant mais ça ne marche pa tableau des élément de type image [ par furiouskiller ] salu ,comment faire pour créer un tableau contenant de élément de type images ?merci d'avanceFµr!oUs KiLl£r élimination d'un élément de array (as3) [ par inaden ] Bonjour à tous et Bonne AnnéeVoilà le pb que j'ai :Le but de l'anim est un jeu de question... appel des question réponse par xml... tout va bienMise e [Problème] Tableau pour debutant [ par Achoum ] Bonjour tout le monde.Je debute le flash (depuis 2 jours) et j'ai un problème que je n'arrive pas a résoudre : si quelqu'un pouvais m'aider.Je créé un problème de splice [ par anartiste ] anartisteBonjour à tous , voilà, je voudrais appliquer un splice sur des tableaux crées en série mais ça ne fonctionne pas, je vous montre le code et


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales