Array multidimensionnel et variables... et les limites de flash [Résolu]

Signaler
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
Bonjour à toutes et à tous,

je vous explique rapidement mon souci :
j'ai fait un lecteur mp3 multiplaylistes, et je suis en train de mettre en place un système de panier qui permettra de passer une commande pour des morceaux choisis.
Pour gérer donc l'affichage des morceaux ajoutés au panier, voici la solution pour laquelle j'ai opté :
- je charge donc au début le xml "playlists" qui contient les url de chacune de mes playlistes, et je stocke tout ça dans un array ("mesAlbums" par exemple).
- ensuite une fois le xml chargé je fais une boucle sur un array déclaré au préalable ("TabCommande" par exemple), afin de créer les dimensions nécessaires -> 1 dimension pour une playliste.
- ensuite au chargement de la playliste par défaut (mesAlbums[0] en somme) je lance un boucle qui permet de "remplir" la dimensions en rapport de "TabCommande", soit TabCommande[0].
- puis après au changement de playliste je relance le procédé en utilisant une variable pour pister l'index de la playliste -> PosMonAlbum = l'index de la playliste choisie contenue dans l'array "mesAlbums".

Jusque là tout va bien, à chaque chargement de playliste mon array multidimensionnel se remplit correctement.
Alors c'est là que ça se corse :
- pour ajouter un morceau au panier je clique donc sur un bouton (btn_ajout_panier), et grâce à une variable nombre "PosZik", j'identifie l'index du morceau, et la variable PosMonAlbum me permet d'identifier la dimension de l'array "TabCommande". Puis je modifie TabCommande en mettant le prix du morceau choisi (le prix par défaut d chaque morceau contenu étant 0). Une fois ceci fait j'appelle une fonction qui effectue une boucle sur TabCommande et une condition dans cette boucle précise que si la donnée "prix" est différente de 0, cela pushe les données à cet index dans un autre array : "MaCommande", et enfin une autre fonction est appelée et dans cette fonction j'effectue une boucle sur "MaCommande" afin de créer dynamiquement des clips "boutons" pour afficher la commande passée, du genre pour chaque clip créé : "Mon Morceau - Prix 45 euros".

Conclusion :
vous constaterez que j'ai donc pas mal de boucles et pas mal d'array dans mon code, et c'est probablement pour ça que ça coince, car lorsque je teste j'ai des résultats qui ne sont pas logiques ; en effet j'ai simulé la même commande plusieurs fois (en l'occurrence j'ai testé plusieurs fois d'ajouter les MEMES morceaux au panier), et le fait est que je n'obtiens pas le même résultat à l'affichage du panier d'un test à l'autre.

Ma question est donc la suivante :
est-ce que trop de boucles effectuées à la chaîne dans flash peuvent s'avérer vectrices de "bugs" ? Car malgré tout mon array multidimensionnel "TabCommande" étant rempli correctement, mes variables étant initialisées correctement aux moments où elles doivent l'être, je devrais donc avoir un résultat logique... Mais le résultat n'est pas logique .

Et sinon, comment procéderiez-vous à ma place pour créer un système de panier suivant ces contraintes, en envisageant la solution la moins "lourde" :
- lecteur mp3 multiplaylistes
- panier comportant les commandes "ajout d'un morceau", "suppression d'un morceau", et "changement du prix d'un morceau".
Car finalement je me demande si j'ai opté pour la bonne méthode... Array multidimensionnel ou création d'objets pour gérer les morceaux commandés ?

Merci à celles et ceux qui auront pris le temps de me lire et de me répondre

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;

5 réponses

Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
Le tableau d'objet est en fait exactement comme un XML (et il se traite pratiquement de la même façon).
Pour ce qui est de l'ajout/suppression/modification de donnée dans le XML c'est simple comme bonjour.

Penche-toi un peu dessus, tu verras ...

Peg'
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
question : pourquoi n'utilises-tu pas un array d'objets ?
Voir même directement un xml, tout simplement ...

Peg'
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Hello Peg',

j'avais pensé utiliser le xml, en stockant donc les données "prix" à l'intérieur, mais je trouvais plus commode de gérer tout cela dans le flash afin d'avoir des fichiers xml plus souples. Mais je testerai certainement si je ne parviens pas à trouver la solution. La problématique c'est qu'une fois des morceaux ajoutés au panier, ces morceaux puissent être modifiés au niveau du prix choisi (je propose 4 licences différentes, donc 4 prix), et ce quelle que soit la playliste qui est chargée. C'est pourquoi j'avais opté pour un array multidimensionnel. Ca m'a d'ailleurs permis de "faire connaissance" avec les array multidimensionnels car je n'en avais jamais utilisé.
Un tableau d'objet c'est un tableau dans lequel on crée des objets auxquels on peut appliquer une méthode définie, c'est bien ça ? J'avais envisagé cette solution aussi mais je n'ai pas encore gratté dessus... Donc à voir.

Merci ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Re Peg',

et bien j'en prend bonne note et vais me pencher dessus alors.
Merci pour le tuyau ,

A plus,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Re,

bon j'ai finalement trouvé une solution à mon problème ; à chauqe chargement de playliste je définis une variable nombre qui correspond à l'index de la playliste dans l'array qui les stocke : "PosAlbumM". J'ai un slide de miniatures qui représente les "jacquettes" de chaque playliste, au clic sur l'une de ces miniatures, je définis "PosAlbumM" avec le numéro du clip cliqué. J'ai donc constaté que "PosAlbumM" lors du clic est correctement défini, mais dans mes fonctions pour incrémenter mon array multidimensionnel (fonctions dans lesquelles je ne fais que me servir de "PosAlbumM" pour indiquer quelle est la dimension à modifier), et bien j'ai constaté que "PosAlbumM"... ne correspondait pas forcément à sa juste valeur... allez savoir pourquoi... Bref, pour contourner le problème j'ai tenté ceci : j'ai créé un autre array dans lequel je stocke, à chaque définition de "PosAlbumM", ... et bien "PosAlbumM" lui-même. Le fait est qu'ainsi ça marche, et mon array multidimensionnel se remplit correctement cette fois-ci en allant chercher la bonne dimension à chaque fois.
Tout ça pour dire qu'il y a certainement une faille dans mon code concernant la gestion de ma variable "PosAlbumM"... Mais je n'ai pas encore trouvé où elle était.

Bonne soirée ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;