GROS_FAIGNAN Posted April 18, 2010 Share Posted April 18, 2010 voila, je cherche a creer une sorte de menu permettant d'atteindre a peut pres ce resultat : http://i36.tinypic.com/2yumtdk.png dans le sens ou j'aurais des sorte de combobox qui serait empilé les une sur les autres et s'ecarterait lorsque l'on cliquerai dessus afin de laisser apparaitre le contenu. si quelqu'un a une idée je suis preneur Link to comment Share on other sites More sharing options...
fabien29200 Posted April 18, 2010 Share Posted April 18, 2010 C'est parfaitement faisable en Javascript ... ce qui sera beaucoup moins lourd que du Flash. Link to comment Share on other sites More sharing options...
GROS_FAIGNAN Posted April 18, 2010 Author Share Posted April 18, 2010 C'est parfaitement faisable en Javascript ... ce qui sera beaucoup moins lourd que du Flash. heu oui.... je connais pas le JS, .... [EDIT] et l'AS non plu Link to comment Share on other sites More sharing options...
Shtong Posted April 18, 2010 Share Posted April 18, 2010 Ce genre d'interface s'appelle des "accordéons" donc si tu cherche ça sur google (par exemple "accordion menu" en anglais) sur google je pense que tu trouveras ton bonheur Link to comment Share on other sites More sharing options...
Mephisto Posted April 18, 2010 Share Posted April 18, 2010 si tu ne connais ni l'un ni l'autre, il sera certainement plus simple de le faire en javascript tu obtiendra l'effet en utilisant les attributs onmouseover/onmouseout ou onmouseclick (il y en a certainement d'autres, je suis pas un crac du JS non plus, et je garantie pas que mon bout de code fonctionne) ces attributs vont dans le conteneur de ton bouton (genre <div id='item0' onmouseover='magic(this.id);' onmouseout='magic(this.id);' class='bouton'>Mon Bouton</div>) tu vas egalement creer les boutons qui doivent etre masque (genre div id='hidden_item0_entry0' style='display:none'> ma page </div>) enfin, tu rajoute la fonction JS: function magic(match) { for (i = 0; (elt = document.get_element_by_id('hidden_'+match+'entry'+i) != NULL; i++) elt.style.display = elt.style.display == 'none' ? 'block' : 'none'; } Link to comment Share on other sites More sharing options...
Lilo27 Posted April 18, 2010 Share Posted April 18, 2010 J'avais essayé de faire un menu en as3 il n'y a pas si longtemps, et finalement laissé tomber parce que super galère. Donc +1 pour du JS. Link to comment Share on other sites More sharing options...
GROS_FAIGNAN Posted April 18, 2010 Author Share Posted April 18, 2010 ha...! trop tard j'ai déja commencé j'ai trouver un truc qui m'a beaucoup aidé pour le principe, probleme il est en AS2 et j'ai commencer avec AS3... donc j'essaie de... adapter le lien a cette adresse : http://urfman.free.fr/fhw/accordeon.html et la source est là : http://urfman.free.fr/fhw/Test_accordeon.zip partant de la : 1 - remplacer les nom des menu par les miens 2 - remplacer les "on release=function()" par les "addEventListener" correspondant 3 - remplacer les "_parent" par des "parent" (le source est relativement petit) pour le clip de chaque menu : img=0 stop(); // Je met des stop() et des condition de lecture si le menu est cliqué... addEventListener(MouseEvent.MOUSE_DOWN,ss_menu); function ss_menu(Event:MouseEvent):void { // Si je clique if(parent.currentMenu != null) { // Voir le * parent.retractClip();// 1) je lance la fonction qui retracte le dernier menu consulté si les condition le demande } parent.currentMenu =_name;// 2) Je dis bien à la racine de mon flash quel menu est en train de s'ouvrir (_name = nom du clip concerné) gotoAndPlay(2); // 3) je m'étend (enfin !) } //* Ici, je verifie les condition necessaire pour savoir si il y a un menu à fermer // != c'est "different de" Donc, je n'execute la fonction si currentMenu est null, à savoir, aucun menu ne s'est encore ouvert... img=45 stop(); this.addEventListener(MouseEvent.MOUSE_DOWN,go_play); function go_play():void { this.gotoAndPlay(46); } et sur la timeline main (1 seule image clé): var currentMenu:MovieClip = null; // On initialise une variable donnant le dernier menu ayant été étendu (aucun au debut) // On place les menu les uns en dessous des autres et on actualise constament onEnterFrame = function(){ mngmt_2._y = mngmt_1._y + mngmt_1._height - 1; // le -1 est la pour eviter la doublure des bordures /*menu3._y = menu2._y + menu2._height - 1; menu4._y = menu3._y + menu3._height - 1;*/ } // Voici une fonction qui retracte un menu si on clique sur un autre... //Je la nomme "retractClip". Ici, c'est la recette, je ne donne encore l'ordre à flash de l'executer ! function retractClip() { if(this[currentMenu]._currentframe != 1){ // Si le dernier menu est encore étendu (si il n'est pas sur la frame 1)... this[currentMenu].gotoAndPlay(46);// ... il joue la frame d'après pour te se fermer } } probleme : en sortie j'obtient : 1119: Accès à la propriété currentMenu peut-être non définie, via la référence de type static flash.display:DisplayObjectContainer. // if(parent.currentMenu != null) 1061: Appel à la méthode retractClip peut-être non définie, via la référence de type static flash.display:DisplayObjectContainer. // parent.retractClip(); 1120: Accès à la propriété non définie // _name. parent.currentMenu =_name; 1119: Accès à la propriété currentMenu peut-être non définie, via la référence de type static flash.display:DisplayObjectContainer. // parent.currentMenu =_name; Warning: 1058: Problème de migration : la propriété '_height' n'est plus prise en charge. Utilisez plutôt la propriété DisplayObject.height.. // mngmt_2._y = mngmt_1._y + mngmt_1._height - 1; - je pense que le probleme de currentMenu vient d'un probleme de declaration du movieclip (code de la timeline main) qui doit s'effectuer autrement en AS3 (je suppose) - en ce qui concerne retractCip je vois pas - et pour le probleme de migration je cherche... si quelqu'un voi d'ou sa peut venir... [EDIT] pour les warnings c'est regler, reste donc les 4 premieres erreurs Link to comment Share on other sites More sharing options...
GROS_FAIGNAN Posted April 18, 2010 Author Share Posted April 18, 2010 bon ba en fait remplacer "_parent" par "parent". sa n'a pas l'air super... le probleme a l'air de venir de la mais je vois pas comment le resoudre [EDIT] j'ai tenter de contourner le probleme en remplacant "_parent" par "root" mais les meme erreur se produisent ... Link to comment Share on other sites More sharing options...
GROS_FAIGNAN Posted April 19, 2010 Author Share Posted April 19, 2010 mission accomplie en AS2 mais bon... c'est vrai que c'est lourd Link to comment Share on other sites More sharing options...
Shtong Posted April 19, 2010 Share Posted April 19, 2010 Bon si ça fonctionne tant mieux mais juste pour info : Le problème avec tes erreurs est que tu essaies d'accèder aux enfants d'un DisplayObject avec la mauvaise syntaxe. Il ne faut pas faire : parent.currentMenu car cela signifie accéder au membre "currentMenu" de la structure DisplayObjectContainer (j'utilise volontairement du jargon C puisque tu es un expert ) qui bien entendu n'existe pas. Tout les conteneurs graphiques n'ont pas de currentMenu. Pour accèder à un enfant bien précis d'un DisplayObjectContainer tu peux utiliser entre autres la méthode getChildByName : parent.getChildByName("currentMenu") Link to comment Share on other sites More sharing options...
GROS_FAIGNAN Posted April 19, 2010 Author Share Posted April 19, 2010 merci pour l'astuce... a savoir comment faire pour trouver d'entrer de jeux la bonne fonction qui correspond a quoi .... l'avantage avec le C c'est qu'au moins 1 nom ne peut pas correspondre a 36 fonction (parfois l'aide interactive de flash me sort 36 proto différent pour le meme nom de fonction/methode...) par contre, je me trompe peut etre mais ont dirait qu'il y a une sorte de logique dans tout sa, ou un meme nom de methode pourrait appartenira plusieurs "classe" des genres de groupement en fonction des objets qu'elles doivent traiter ... ??? Link to comment Share on other sites More sharing options...
Mephisto Posted April 19, 2010 Share Posted April 19, 2010 les joies de la polymorphie :) enfin, je sais pas precisement de quoi tu parles (flash, technos a la con, toussa ^^), mais c'est l'un des gros avantages des langages objet on cree une classe generic, qui represente ta page (par exemple), cette classe a les methodes load() et unload() (ouai, gros gros exemple) on a une classe bouton extend generic (qui herite de), avec donc les methodes de generic (que tu ne reimplementes pas, a moins que la classe mere soit virtuelle, ... enfin, manque pleins de details, l'objet, ca s'explique pas, ca se venere), mais aussi sa methode click() (toujours gros exemple) apres (pour que tu comprennes pourquoi t'as plusieurs protos), j'ai parle des virtuelles (et c'est qu'un exemple parmis d'autres) dans ta classe virtuelle toto, tu as des methodes virtuelles MakeSandwitch MakeCoffee, MakeWorld (bon, je resume, t'as beaucoup de doc a lire ^^) et tu fais heriter sur les class titi et tata, qui vont toutes les deux implementer ces methodes, de maniere differente ce qui simplifie pas mal les prototypages (templates, stockage de plusieurs "differents" types d'objets heritant d'une classe commune dans un conteneurs de la stl, ...) (l'objet, raconte en cinq lignes mais, pour en revenir au "ca se venere" : oui, c'est plus que du code, c'est une religion www.cplusplus.com pour bien commencer, et on en reparle dans 10 ans ) Link to comment Share on other sites More sharing options...
Shtong Posted April 19, 2010 Share Posted April 19, 2010 Ouais ! Enfin faut trop lui en demander à Msieur actionscript hein, les classes génériques c'est pas demain la veille qu'on verra ça dans Flash Mais oui faignan ce regroupement de fonctionnalités que tu devines c'est la base de la programmation objet Ensuite il n'y a pas non plus de polymorphisme, seulement des paramètres par défaut (que t'es pas obligé de préciser et ça leur met une valeur par défaut quoi) C'est toute une tournure d'esprit à acquérir et pour certains c'est pas facile (je suis bien placé pour le savoir ) mais quand tu l'apprends ça te change la vie ! Link to comment Share on other sites More sharing options...
GROS_FAIGNAN Posted April 19, 2010 Author Share Posted April 19, 2010 les joies de la polymorphie :)on cree une classe generic, qui represente ta page (par exemple), cette classe a les methodes load() et unload() (ouai, gros gros exemple) on a une classe bouton extend generic (qui herite de), avec donc les methodes de generic (que tu ne reimplementes pas, a moins que la classe mere soit virtuelle, ... [...] (l'objet, raconte en cinq lignes mais, pour en revenir au "ca se venere" : oui, c'est plus que du code, c'est une religion www.cplusplus.com pour bien commencer, et on en reparle dans 10 ans ) et la marmote elle mais le chocolat dans le papier d'alu... mais bien sûr !!! AARRRRF C'est toute une tournure d'esprit à acquérir et pour certains c'est pas facile (je suis bien placé pour le savoir ) mais quand tu l'apprends ça te change la vie ! comme sa maintenant on est 2 bon bah des que j'ai fait mon site je me met au C++, et toc ! ce qui simplifie pas mal les prototypages (templates, stockage de plusieurs "differents" types d'objets heritant d'une classe commune dans un conteneurs de la stl, ...) meme si j'ai compris ton explication (en gros, j'avoue ), de là a dire que sa simplifie... ya un monde par ce que la methode ".grominet" comprenant 150 proto diférents selon qu'elle sort de la classe "Fake.world" ou "Fork.Program" pouvant s'appliqué a des objet sortant de 36 classe "titi" ou "tata" diférentes, essaye un peut de savoir quelle parametre tu doit leur passer ou comment tu doit les appliqué a l'objet en question ... cela dit j'imagine que c'est comme tout sa s'apprend ! Link to comment Share on other sites More sharing options...
Mephisto Posted April 20, 2010 Share Posted April 20, 2010 bah, si tu te met au C++, au début, tu sera déstabilisé par la trés grand variété de types (classes, conteneurs, de la stl ou pas, ..., bref, t'en as dans tous les sens), et le fait qu'il faille parfois (en fonction du projet) pouvoir traiter indifféremment plusieurs types d'objets, déviant en général d'une même entité. par contre, ca 'simplifie' si tu regarde ça globalement faut des notions d'architecture, pour mettre un tel bordel en place (un coup de modélisation, ça coute pas plus cher) mais avec un peu de bon sens, en regardant le produit finit, on comprends globalement pourquoi les chose sont ainsi faites, l'interet de pouvoir appliquer plusieurs fois, de manière transparente, le même traitement a tous les elements d'un ensemble, quand bien même ces éléments comprtent différentes entités (boutons, textarea, images, ...), mais disposent d'un même 'set' de méthodes Link to comment Share on other sites More sharing options...
GROS_FAIGNAN Posted April 20, 2010 Author Share Posted April 20, 2010 c'est vrai que dit comme sa sa merite qu'on si interesse ! après je vais déja essayer de monter un site web genre pas-trop-moche.com et sa sera déja pas trop mal. pour l'instant je me prend la tete avec la 3D et avec AS (qui sont tout les 2 très casse-cou***). je test 3d swift, qui n'est pas simple a prendre en main (un vrai bordel). Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.