Double sous menu, et problème XML

Présentez-nous les sites internet que vous avez réalisé ou demandez de l'aide pour du développement.

Double sous menu, et problème XML

Messagepar darkart sur Mar 07 Avr 2009 09:24

Bonjour à tous,

Je m'inscris suite à quelques messages avec Boris, et comme on pense que je en suis pas le seul à avoir des soucis comme ça ... Enfin !

Je voudrais avoir 2 sous menus : MOVIES (1) MUSICS (2) PICTURES (1) DOWNLOAD (2) LINKS (1)
le souci est que moi j'avais doublé toutes les fonctions (affiche sous menu, init sous menu, masque ... )
Mais ce n'est pas la bonne méthode, ce que je conçois parfaitement, étant donné que le peu de programmation que j'ai faite, du C, est loin derrière moi !

Donc mon code est le suivant :

Code: Tout sélectionner
function afficheSousMenu1(event:MouseEvent) {

   posInitCurseur = event.currentTarget.x;
   if (event.currentTarget == menuBas.bmovies) {


      sousMenu1Selectionne = 1;
      if (etatSousMenu1 == false) {
         initSousMenu1();
      } else {
         masqueSousMenu1();
      }
   } else if (event.currentTarget == menuBas.bmusics) {


      sousMenu1Selectionne = 2;
      if (etatSousMenu1 == false) {
         initSousMenu1();
      } else {
         masqueSousMenu1();
      }
   } else if (event.currentTarget == menuBas.bpictures) {

      sousMenu1Selectionne = 3;
      if (etatSousMenu1 == false) {
         initSousMenu1();
      } else {
         masqueSousMenu1();
      }
   } else if (event.currentTarget == menuBas.bdownload) {

      sousMenu1Selectionne = 4;
      if (etatSousMenu1 == false) {
         initSousMenu1();
      } else {
         masqueSousMenu1();
      }
   } else if (event.currentTarget == menuBas.blinks) {


      sousMenu1Selectionne = 5;
      if (etatSousMenu1 == false) {
         initSousMenu1();
      } else {
         masqueSousMenu1();
      }
   } else {
      if (etatSousMenu1 == true) {
         sousMenu1Selectionne = 0;
         masqueSousMenu1();
      }
   }
}

(NOTE : le chiffre 1 n'a plus d'importance ici !, uniquement dans le cas ou je double les fonctions d'après !)

Donc le test que j'effectue n'est pas le bon ! Mais quel est-il ?

*************************************************
Ensuite autre question, qui ne sera pas la seule je vous rassure !

Le fichier XML, et bien ne marche pas, soit j'ai fais une erreur et je ne la voit pas, ou je me perds ...

A savoir que j'ai uploader mon fichier XML fait avec dreamweaver, avec les images que je souhaite affichées.

et la première partie du xml ressemble à ça :

Code: Tout sélectionner
<movies>
   <!-- X -->
   <short>
      <projet nomProjet="Graphic 1" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien1.jpg">
      </projet>
      <projet nomProjet="Graphic 2" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien3.jpg">
      </projet>
      <projet nomProjet="Graphic 3" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien2.jpg">
      </projet>
      <projet nomProjet="Graphic 4" typeProjet="Affiche" image="http://www.fileden.com/files/2008/1/28/1725131/croute.JPG">
      </projet>
   </short>
   <experimental>
      <projet nomProjet="Graphic 1" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien3.jpg">
      </projet>
      <projet nomProjet="Graphic 2" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien2.jpg">
      </projet>
      <projet nomProjet="Graphic 3" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien1.jpg">
      </projet>
      <projet nomProjet="Graphic 4" typeProjet="Affiche" image="http://www.fileden.com/files/2008/1/28/1725131/croute.JPG">
      </projet>
   </experimental>
   <X>
      <projet nomProjet="Graphic 1" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien2.jpg">
      </projet>
      <projet nomProjet="Graphic 2" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien3.jpg">
      </projet>
      <projet nomProjet="Graphic 3" typeProjet="Wallpaper" image="http://www.fileden.com/files/2008/1/28/1725131/lien1.jpg">
      </projet>
      <projet nomProjet="Graphic 4" typeProjet="Affiche" image="http://www.fileden.com/files/2008/1/28/1725131/croute.JPG">
      </projet>
   </X>
</movies>



(NOTES : ce sont les mêmes images, mais c'est juste pour le test, et j'ai viré la description du projet, car cela me sert pour un autre sous menu, en image celui-ci, qui s'affiche en haut, comme un bandeau, puis lorsque je cliquerais sur une image, une fenêtre assombrissant la page d'accueil - sans le bandeau - apparaîtra avec le contenu).

Je pense aussi que mon dossier est mal organisé ... Mais là je bloque ...

Merci à tous !
darkart
Nouveau membre
 
Messages: 19
Inscrit le: Mar 07 Avr 2009 09:12
Reputation points: 1
Add reputation pointSubtract reputation point

Re: Double sous menu, et problème XML

Messagepar explainMe sur Mar 07 Avr 2009 19:16

Salut et bienvenu sur le forum.

Alors comme je pense effectivement qu'il n'est pas nécessaire de faire plusieurs fonctions pour afficher ou masquer el sous-menu, mais simplement modifier la fonction existante.

Donc nos 2 fonctions montreMenu(); et masqueMenu(); ne vont pas bouger.

En revanche c'est la fonction affichesousMenu(); qui va être modifiée :
Code: Tout sélectionner
function afficheSousMenu(event:MouseEvent) {
   posInitCurseur = event.currentTarget.x;
   if (event.currentTarget == menuBas.bPortfolio) {
      sousMenuSelectionne = 1;
      if (etatSousMenu == false) {
         initSousMenu();
      } else {
         masqueSousMenu();
      }
   } else if (event.currentTarget == menuBas.bProfil) {
      sousMenuSelectionne = 2;
      if (etatSousMenu == false) {
         initSousMenu();
      } else {
         masqueSousMenu();
      }
   } else {
      if (etatSousMenu == true) {
         sousMenuSelectionne = 0;
         masqueSousMenu();
      }
   }
}

Et ce sont essentiellement les tests qui doivent êtres modifiés :
if (event.currentTarget == menuBas.bPortfolio)
et
else if (event.currentTarget == menuBas.bProfil)

Dans mon cas je n'ai que 2 boutons qui déclenchent l'apparition d'un menu, donc chaque test est un test "simple" (comprendre qu'on n'y test qu'une seule chose à la fois).

Cependant comme bien d'autres langages de programmation l'ActionScript permet de faire des tests plus complexes grâces aux opérateur AND (&&) et OR (||).

Si j'ai bien suivit ton explication, tu n'a en réalité que 2 sous-menus (comme moi finalement) sauf que dans ton cas, chaque menu peut être appelé par plusieurs boutons :

    - le sous-menu 1 peut être appelé par les boutons : MOVIES, PICTURES, et LINKS
    - le sous-menu 2 peut être appelé par les boutons : MUSICS et DOWNLOAD

Donc tu as toujours 2 tests (le dernier else seul pouvant être supprimé dans ton cas puisque tu vas tester tous tes boutons donc aucun bouton ne correspondra à la valeur par défaut (à priori, si j'ai bien compris).

Donc ne te reste plus qu'à modifier tes 2 tests pour qu'ils prennent chacun en compte tous les boutons susceptibles de correspondre à leurs actions.
En gros le premier test va devenir quelque chose dans ce style :
Code: Tout sélectionner
if (event.currentTarget == [premier bouton possible] || event.currentTarget == [deuxième bouton possible] || event.currentTarget == [deuxième bouton possible] ) {
          //--- Ici les actions qui vont bien  ---
}


Et le second quelque chose du genre :
Code: Tout sélectionner
else if (event.currentTarget == [premier bouton possible] || event.currentTarget == [deuxième bouton possible]) {
        //--- Ici les actions qui vont bien ---
}


Note que je ne te donne pas la solution toute faite pour que tu la trouve par toi-même, ainsi tu as plus de chance de comprendre ce que tu fait (et c'est plus gratifiant aussi ;) ).


/*====================================================*/

Pour ce qui est de ta seconde question je suis plus perplexe.

Premièrement car j'ai du mal à comprendre comment tu peux déjà en être au chapitre 5 alors que le chapitre 4 ne fonctionne pas complètement. Je conçois que vous soyez tous impatients de voir votre site tourner après de durs efforts, mais sauter des étapes n'est pas une très bonne idée je pense (avant de passer à la conduire il faut d'abord avoir vu le code : oups le jeu de mot involontaire :oops: ).

De plus ton code XML à lui seul ne suffit pas car le souci viens probablement de ta fonction qui charge et parcours le fichier.

Ou alors tu utilise déjà du XML car tu veux gérer tes sous-menus (et ton menu d'ailleurs aussi pourquoi pas) avec des données provenant d'un fichier XML... Auquel cas l'idée est bonne mais apparement un peu prématurée.

Dans pour l'heure je préfère que l'on règle le souci des sous-menus avant de passer au XMl, ça évitera que tu t'embrouille les pinceaux...

/*====================================================*/

Dernière chose enfin, tu m'as demandé comment étaient organisés mes fichiers.

C'est une très bonne question ! J'en parle un peu dans le chapitre 5 mais j'aurais certainement du faire un schéma récapitulatif qui aurait été plus précis pour tout le monde. Je n'y ai malheureusement pas pensé mais mieux vaut tard que jamais donc je vais préparer un schéma et mettrai à jour le cours dès que j'ai 5 minutes.

D'ici là voici comment sont organisés mes fichiers par rapport aux codes que j'ai présentés pour le moment dans les différents chapitres (tous les fichiers et/ou dossiers ayant leurs "+" alignés sont au même niveau) :

+ interface.swf
+ portfolio.swf
+ portfolio.xml
+ images
----+ graphisme
---------+ 01.jpg
---------+ 02.jpg
---------+ 03.jpg
---------+ 04.jpg
----+ multimedia
---------+ 01.jpg
---------+ 02.jpg
---------+ 03.jpg
----+ 3D
---------+ 01.jpg
---------+ 02.jpg
----+ sketch
---------+ 01.jpg
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Double sous menu, et problème XML

Messagepar darkart sur Mer 08 Avr 2009 18:42

Merci pour ta réponse.

Petite précision quant au fait que je saute une étape pour avancer sur une autre... C'était juste pour avoir une idée de comment faire par la suite, et
vu que je ne m'en sortais pas avec ce sous menu ... Enfin bref ... Mais tu as raison !

Pour tes tests, je les ai mis en place, viré le dernier else if, et testé plusieurs "parties qui vont bien" (comme tu dis) mais pas si bien dans mon cas ! :lol:

Alors je récapitule :

-je clique sur un bouton, MOVIES, MUSICS, PICTURES, DOWNLOAD ou LINKS
-ma fonction me dis : "si je clique sur "movies" OU "pictures" OU "links"

OU
"si je clique sur "pictures" OU "download"

Regardons a l'intérieur de la première partie :

ce que je comprends mais n'arrive pas écrire en code :
C'est comment arriver à faire selectionner le le numéro de "sousMenuSelectionne", 1 ou 3 ou 5 dans le premier if,
et 2 ou 4 dans le else if.

j'ai essayer plein de trucs, mais visiblement pas assez.

Et non, bien que j'y ai penser, je n'utilise pas le xml pour les sous menus (trop compliqué pour le moment comme tu l'as dit!)

Merci encore de ton aide !
darkart
Nouveau membre
 
Messages: 19
Inscrit le: Mar 07 Avr 2009 09:12
Reputation points: 1
Add reputation pointSubtract reputation point

Re: Double sous menu, et problème XML

Messagepar explainMe sur Mer 08 Avr 2009 19:53

darkart a écrit: ce que je comprends mais n'arrive pas écrire en code :
C'est comment arriver à faire selectionner le le numéro de "sousMenuSelectionne", 1 ou 3 ou 5 dans le premier if,
et 2 ou 4 dans le else if.


Alors là c'est moi qui ai due t'induire en erreur car je n'ai pas bien compris tes explications initiales je pense :

Donc question simple :

As-tu 1 sous-menu spécifique par bouton ? (cas 1)

ou

As-tu 2 sous-menus qui sont appelés, pour le premier par les boutons MOVIES, PICTURES, et LINKS, et pour le second par les boutons MUSICS et DOWNLOAD ? (cas2)

Si tu es dans le cas 2, alors ce que j'ai dit dans mon précédent post est correct.

En revanche, si tu es dans le cas 1, alors j'ai mal compris et la solution n'est pas celle indiqué dans mon post (au passage désolé pour l'embrouille :( ), mais tu dois plutôt rajouter des tests (tu fait plusieurs if en fait).

Dans ce cas on repose tout et je t'explique.
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Double sous menu, et problème XML

Messagepar darkart sur Mer 08 Avr 2009 20:33

Rassure toi tu as bien compris...

J'ai bien 2 sous menus, le premier appelé par les boutons 1, 3 et 5,
et le second par les boutons 3 et 5.

Alors si je comprends bien, mon clic sélectionne un sous menu, et dès lors je dois lui dire que
si c'est le premier alors le sousMenuSelectionne = 1, et ainsi de suite....

C'est bien ça? Ce qui me ferait trois tests if pour la première partie de la fonction et deux if pour la seconde.

Mais comment faire pour masquer le sous menu selectionné auparavant? Un petit coup de fonction masqueSousMenu au début de la fonction? Je pense que oui, je vais déjà teste les multiples if voir si ça marche!

Merci à toi!
darkart
Nouveau membre
 
Messages: 19
Inscrit le: Mar 07 Avr 2009 09:12
Reputation points: 1
Add reputation pointSubtract reputation point

Re: Double sous menu, et problème XML

Messagepar explainMe sur Mer 08 Avr 2009 22:39

En fait :

Soit tes 2 sous-menus sont le même clip "physique" (comme moi dans le cours, auquel cas je change dynamiquement les valeurs des boutons, etc..).

Soit tu as 2 sous-menus "physiques" auquel cas effectivement il va te falloir aussi bidouiller les fonctions montreSousMenu(); et masqueSousMenu(); pour leur indiquer quel sous-menu elle doivent masquer/montrer.

Je sais pas si je suis très clair là...
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Double sous menu, et problème XML

Messagepar darkart sur Mer 08 Avr 2009 23:06

Ha oui voilà !
Je me disais aussi que c'était vraiment bizarre de ne pas toucher au reste des fonction!

Oui quand je parle de deux sous menus, c'est bien deux sous menus distincts physiquement.
Désole je n'ai pas été très clair. Mais bon on finit par s'en sortir.

Donc j'ai 3 if pour la partie une de affiche sous menu
Et 2 pour la seconde.

Pour la fonction affiche sous menu, je pense faire ceci :
Un test pour chacune: je test si le sousmenu1 est affiché quand j'appel
Le sous menu2, et si tel est le cas je le masque, et ainsi de suite.

Après pour la fonction masque et l'autre affiche, faut-il que je les doubles?
Ou de la meme manière que je fasse un test? Peu être plus simple de doubler comme ça
Qu'en je clique et que je me trouve dans le sous menu 2, je masque direct le sous menu 1 par
La fonction" masqueSousMenu1". C'est bien je pense, mais sur qu'il est possible d'en faire qu'une de chaque.

Ça sent la solution, mais de loin, comme une cocotte minutes fermée dans la cuisine et moi dans le métro...
darkart
Nouveau membre
 
Messages: 19
Inscrit le: Mar 07 Avr 2009 09:12
Reputation points: 1
Add reputation pointSubtract reputation point

Re: Double sous menu, et problème XML

Messagepar darkart sur Jeu 09 Avr 2009 16:18

Bonjour à tous,

Je reviens en force, pleins de questions et les yeux rouges à cause des pixels...

1/ je ne vois pas très bien quoi faire comme test, on comment agencer mon test en faisant suite à :

Code: Tout sélectionner
   if (event.currentTarget == menuBas.bmovies || event.currentTarget == menuBas.bpictures || event.currentTarget == menuBas.blinks) {


j'ai essayé ça, mais sans résultat :

Code: Tout sélectionner
sousMenu1Selectionne == 1 || sousMenu1Selectionne == 3 || sousMenu1Selectionne == 5;
       if (sousMenu1Selectionne == 1) {
          if (etatSousMenu1 == false) {
          initSousMenu1();
          }
       } else {
          masqueSousMenu1();
       }


et j'ai fait 3 "if" à la suite pour le 3 tests...

Et pour la fonction montreSousMenu :

Code: Tout sélectionner
function masqueSousMenu1() {
   if (sousMenu1Selectionne == 1 || sousMenu1Selectionne == 3 || sousMenu1Selectionne == 5) {
   var alphaSousMenu:Tween = new Tween(menuBas.sousMenu1, "alpha", Strong.easeOut, 1, 0, 2, true);
   alphaSousMenu.addEventListener(TweenEvent.MOTION_FINISH, sousMenuNo);
   } else {
      if (sousMenu1Selectionne == 2 || sousMenu1Selectionne == 4) {
   var alphaSousMenu:Tween = new Tween(menuBas.sousMenu2, "alpha", Strong.easeOut, 1, 0, 2, true);
   alphaSousMenu.addEventListener(TweenEvent.MOTION_FINISH, sousMenuNo);
      }
   }   
}


2/ Malgré le fait que ce n'est pas très de passer à autre chose, je suis tout de même passer un petit coup par le XML, étant sur
de le faire marcher après avoir refait toute l'interface graphique, textes... pour éliminer des erreurs éventuelles !

Mais une fois de plus, RIEN, NADA ....

quand le selectionne mon premier sous menu, avec les boutons "experimental", "short" et "X", peu importe ce que je mets dans le portfolio du tuto, rien
ne se passe, et il me dit :

Code: Tout sélectionner
Error #2044: ioError non pris en charge : text=Error #2032: Erreur de flux. URL: file:///C|/Documents%20and%20Settings/JOE/Bureau/essai%20flash/WART%2DIN/true/movies
   at movies_fla::MainTimeline/movies_fla::frame1()

(note : le movies correspond au portfolio du tutorial, renommé pour pas me perdre...)


Alors je ne vois pas.
ET ce qui me paraît pas clair, c'est comment il fait lui, le code de portfolio pour capter que je clique sur tel ou tel bouton de mon interface, puisque rien
ne fait appel à portfolio quand je clique sur "short" par exemple ?????

Là je commence à être LOST !
darkart
Nouveau membre
 
Messages: 19
Inscrit le: Mar 07 Avr 2009 09:12
Reputation points: 1
Add reputation pointSubtract reputation point

Re: Double sous menu, et problème XML

Messagepar explainMe sur Jeu 09 Avr 2009 19:57

Alors pour ton premier problème se sous-menus je pense que tu vas trop loin donc je vais essayé de remettre tout à plat pour d'abord élaborer la structure des test avec des phrases simples et ensuite le traduire en code (mais tu n'aura ça que demain je pense).

Pour ce qui est du XML :
darkart a écrit:ET ce qui me paraît pas clair, c'est comment il fait lui, le code de portfolio pour capter que je clique sur tel ou tel bouton de mon interface, puisque rien
ne fait appel à portfolio quand je clique sur "short" par exemple ?????


Voilà tu as trouvé par toi-même :

Portfolio.fla et interface.fla sont pour l'heure 2 fichiers totalement autonomes et portfolio N'EST PAS encore chargé dans interface... Donc tu ne risque pas de trouver d'appel aux fonction de portfolio dans le code du fichier interface (ça va venir mais je ne vous l'ai pas encore expliqué). Je sais je suis diabolique :twisted: .

Le but étant que vous puissiez tout de suite voir les données du XML s'afficher dans portfolio sans aller vous rajouter en plus le code de charge d'un swf dans l'autre. Par la suite nous ajouterons du code à interface.fla et modifierons un peu celui de portfolio.fla pour qu'ils fonctionnent ensemble.
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Double sous menu, et problème XML

Messagepar darkart sur Jeu 09 Avr 2009 20:10

Ok, c'est cool pour les tests, parce que là je nage, je coule, que dis-je, je touche le fond...
Bref, ça ira mieux avec un peu de français ...


Pour "portfolio" je comprends mieux, je me disais aussi, putain mais c'est bizarre !!!!

Encore merci !
darkart
Nouveau membre
 
Messages: 19
Inscrit le: Mar 07 Avr 2009 09:12
Reputation points: 1
Add reputation pointSubtract reputation point

Suivant

Retourner vers Développements - Web

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 0 invités

cron