Eagle1 Posté(e) le 21 juillet 2008 Auteur Partager Posté(e) le 21 juillet 2008 allez une petite var chargementXML:URLLoader = new URLLoader();// objet de chargement var fichier:URLRequest = new URLRequest("bdd.xml");// url du fichier chargé chargementXML.addEventListener( Event.COMPLETE, chargementComplet ); chargementXML.load(fichier); // chargement terminé du fichier xml function chargementComplet(pEvt:Event):void { // on récupère notre xml var donnee:XML = new XML( pEvt.target.data );//la classe XML est une classe native de Flash, on la trouve dans le package Top Level. var restaurant:XMLList = donnee.elements(); //le document XML est constitué d'une liste d'éléments XML, en l'occurence ici, une liste de personnes var lol = "restaurant.php?id=" + restaurant.(nomrestaurant=evt.target.selectedItem.source).idresto; navigateToURL( new URLRequest(lol), "_blank"); } sur que tu comprend ce que je veux faire ce qui me pose problème c'est : var lol = "restaurant.php?id=" + restaurant.(nomrestaurant=evt.target.selectedItem.source).idresto; evt.target.selectedItem.source contient le nom du restaurant dont je cherche l'id j'ai besoin donc qu'il me le trouve et qu'il me sorte uniquement ça pour le moment voila le résultat que ma variable lol: restaurant.php?id=<idresto>1</idresto><idresto>2</idresto><idresto>3</idresto> pas terrible ^^ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 21 juillet 2008 Auteur Partager Posté(e) le 21 juillet 2008 !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! var lol = "restaurant.php?id=" + restaurant.(nomrestaurant==evt.target.selectedItem.label).idresto; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 21 juillet 2008 Partager Posté(e) le 21 juillet 2008 Yaich, ça devient dur Je vais regarder ça demain Edit : on s'est croisé ˆˆ, c'est bon alors ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 21 juillet 2008 Auteur Partager Posté(e) le 21 juillet 2008 je suis un boulet ^^ quand j'aurai finit tout ça et compris correctement je l'expliquerai bien dans la F.A.Q. la je suis un peu en mode test ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 22 juillet 2008 Partager Posté(e) le 22 juillet 2008 Ben alors je suis un boulet aussi, car je la fais aussi de temps en temps, la faute du = au lieu de == Y a pas de souci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 22 juillet 2008 Auteur Partager Posté(e) le 22 juillet 2008 oh t'es la ce matin toi ^^ j'ai rempli un peu la FAQ alors j'ai encore quelques question : j'ai un composant TileList sur ma page. Je lui file le focus dès que la souris passe dessus. Comme ça un petit texte s'affiche et te dit : appuie sur espace pour agrandir le menu ^^ seulement ça marche pas sur firefox 3 (ça nécessite un clic sur le composant)... mais oui sous IE.. je vois pas moyen de contourner le truc... a part que l'évènement KEYBOARD de la touche espace soit placé sur le document complet... Toujours pour mon TileList, je cherche comment changer son style, y a une classe apparement mais je comprend rien à comment changer le style... et dernièrement, c'est possible d'écouter MOUSE_MOVE sur la scène entière histoire de recup les coordonnée de la souris ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 22 juillet 2008 Partager Posté(e) le 22 juillet 2008 Bonjour Toi Mets-moi le code pour ton TileList, je vais voir ce que ça donne chez moi (plus le code html) Sinon, pour modifier le style, les méthodes se trouvent dans l'aide, dans les Properties de la classe TileList. Tu as par exemple rowCount, rowHeight ... Pour modifier le rowHeight par exemple, le code sera le suivant : var myTileList:TileList = new TileList(); myTileList.rowHeight = 100; Pour les coordonnées de la souris sur un MOUSE_MOVE, c'est event.stageX et event.stageY, avec ça : stage.addEventListener(MouseEvent.MOUSE_MOVE, action); function action (event:MouseEvent):void { trace(event.stageX); // coordonnées horizontales trace(event.stageY); // coordonnées verticales } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 22 juillet 2008 Auteur Partager Posté(e) le 22 juillet 2008 merci pour la souris import fl.controls.TileList; import fl.data.DataProvider; import fl.controls.ScrollBarDirection; // on charge du xml var chargementXML:URLLoader = new URLLoader();// objet de chargement var fichier:URLRequest = new URLRequest("bdd.xml");// url du fichier chargé chargementXML.addEventListener( Event.COMPLETE, chargementComplet ); chargementXML.load(fichier); // chargement terminé du fichier xml function chargementComplet(pEvt:Event):void { // on récupère notre xml var donnee:XML = new XML( pEvt.target.data );//la classe XML est une classe native de Flash, on la trouve dans le package Top Level. var restaurant:XMLList = donnee.elements(); //le document XML est constitué d'une liste d'éléments XML, en l'occurence ici, une liste de personnes for each(var contact:XML in restaurant)//pour chaque noeud enfants dans la liste des personnes { dp.addItem({label: contact.nomrestaurant, source: contact.imagepresent}); } } // on affiche le menu var dp:DataProvider = new DataProvider(); dp.addItem({label: "lol", source: "t"}); dp.addItem({label: "Au caveau Nuitons", source: "t"}); var myTileList:TileList = new TileList(); myTileList.dataProvider = dp; myTileList.columnWidth = 150; myTileList.rowHeight = 120; myTileList.columnCount =1; myTileList.rowCount = 3; myTileList.move(590, 131); myTileList.direction = ScrollBarDirection.VERTICAL; myTileList.verticalLineScrollSize=50; addChild(myTileList); myTileList.mouseFocusEnabled=true; // petit text d'aide sur le menu var aide:TextField = new TextField(); aide.width=300; aide.height=20; aide.x=100; aide.y=150; var testaide = "1"; aide.border=true; aide.htmlText="<font face=\"verdana\">Appuyez sur \"Espace\" pour<br/> agrandir le menu</font>"; addChild(aide); aide.visible=false; myTileList.addEventListener(Event.CHANGE,choixfait); myTileList.addEventListener(KeyboardEvent.KEY_DOWN,agrandir); myTileList.addEventListener(MouseEvent.ROLL_OVER,textaide); myTileList.addEventListener(MouseEvent.ROLL_OUT,removetextaide); function textaide(evt:MouseEvent) { myTileList.setFocus(); if(testaide=="1") { aide.visible=true; } testaide="2"; } function removetextaide(evt:MouseEvent) { aide.visible=false; testaide="1"; } function choixfait(evt:Event) { var chargementXML:URLLoader = new URLLoader();// objet de chargement var fichier:URLRequest = new URLRequest("bdd.xml");// url du fichier chargé chargementXML.addEventListener( Event.COMPLETE, chargementComplet ); chargementXML.load(fichier); // chargement terminé du fichier xml function chargementComplet(pEvt:Event):void { // on récupère notre xml var donnee:XML = new XML( pEvt.target.data );//la classe XML est une classe native de Flash, on la trouve dans le package Top Level. var restaurant:XMLList = donnee.elements(); //le document XML est constitué d'une liste d'éléments XML, en l'occurence ici, une liste de personnes var lol = "restaurant.php?id=" + restaurant.(nomrestaurant==evt.target.selectedItem.label).idresto; navigateToURL( new URLRequest(lol), "_blank"); } } function agrandir(evt:KeyboardEvent) { if(evt.keyCode==32) { aide.visible=false; myTileList.columnCount = 4; myTileList.rowCount = 3; myTileList.move(80, 131); addChild(myTileList); } } pour le style du tilelist il y a un truc plus poussé (omme tu peuxle oir les rowheight je les ai trouvé ^^). regarde du côté de cellrenderer class, moi je pige pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 22 juillet 2008 Partager Posté(e) le 22 juillet 2008 OK. Je vais regarder ça Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 22 juillet 2008 Partager Posté(e) le 22 juillet 2008 Alors, je pense que concernant le problème du TileList, il faut appliquer l'addEventListener au stage et pas au TileList. Ce qui veut dire, au lieu d'avoir ceci : myTileList.addEventListener(KeyboardEvent.KEY_DOWN,agrandir); Je ferais ceci : stage.addEventListener(KeyboardEvent.KEY_DOWN,agrandir); Ce qui déclenche la modification du TileList dès que la touche espace est utilisée. Pour le reste, je regarde tout à l'heure, promis Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 22 juillet 2008 Auteur Partager Posté(e) le 22 juillet 2008 pas pressé j'y ai pensé à ça j'ai essayé seulement je sais pas comment donner le focus au stage en tout cas quand j'appuie sur espace ça marche pas... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 22 juillet 2008 Partager Posté(e) le 22 juillet 2008 C'est bizarre, parce que ça marche chez moi. Le stage, normalement est toujours actif. Pas besoin de lui donner le focus. Remarque, j'ai essayé avec moins de code. Si tu fais : stage.addEventListener(KeyboardEvent.KEY_DOWN, action); function action(event:KeyboardEvent) { if(evt.keyCode==32) { myTileList.rowCount = 5; } } Ca doit marcher. Après, je ne suis pas sûr que le addChild(myTileList) de la fonction agrandir soit nécessaire, car tu l'as déjà fait avant. Mais c'est le texte "appuie sur espace pour agrandir le menu" qui pose problème exactement ? Ou la touche espace ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 23 juillet 2008 Auteur Partager Posté(e) le 23 juillet 2008 en effet il est pas utile c'est la touche espace qui pose le problème quand je met le listener sur stage, ça nécessite un clic quelque part sur l'anim pour que je puisse appuyez sur espace et setFocus(); marche pas sur stage donc je lâche l'affaire je fais un bouton agrandir... edit: pour ce qui est du skin du tile list je peux changer ça en modifiant ce qui est inclue dans la bibliothèque de flash niquel ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 23 juillet 2008 Partager Posté(e) le 23 juillet 2008 mmm OK. J'y pense, mais c'est peut-être pas ça ... j'ai remarqué la même chose (clic avant de pouvoir faire quoi que ce soit) sur Opera (le dernier sorti). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 23 juillet 2008 Auteur Partager Posté(e) le 23 juillet 2008 ça marche sans souci sous IE... mais bon ^^ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 23 juillet 2008 Auteur Partager Posté(e) le 23 juillet 2008 ahah gros casse tête la... que j'ai résolu regarde sachant que le swfobject est le meilleur moyen dintégrer un swf et de référencer correctement ça se récup comme ça: var choix = root.loaderInfo.parameters.choix; test.text=choix; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 24 juillet 2008 Partager Posté(e) le 24 juillet 2008 Ah oui, il parait qu'il faut l'utiliser, personnellement je ne l'ai jamais fait Il y a la détection aussi dedans ... moi je l'ai séparément. Ca t'a résolu des problèmes ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 26 juillet 2008 Partager Posté(e) le 26 juillet 2008 Eagle1 : ton lien est obselete, cela fait à peu près 6 mois que SO est passé en v2. Après l'avoir essayer tu ne voudra plus jamais repasser sur la 1.5 : http://code.google.com/p/swfobject/ Sinon pour la petite histoire des librairies d'encapsulations, au départ SWF Object s'appelait Flash Object et possèdait un concurrent : UFO (Unidentified Flash Object). Cela a duré un moment jusqu'à ce que la deuxième génération de ces librairies se préparent et qu'arrive un troisième laron "SWF Fix" qui grâce à un article sur ALA à réussi à rescussité le projet SO et unifier les efforts des trois librairies. Depuis le monde des flasheurs/javascripteurs baigne dans l'amour, la joie et le nutella. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 27 juillet 2009 Auteur Partager Posté(e) le 27 juillet 2009 et hop je vais faire revrire cette centralisation Bonjour a tous ! Voici mon nouveau projet : un mini flash de dessin sur site web fonctionnalitee : - ligne droite, crayon normal, carre, rond, remplir des espaces blancs, effacer, changer d'epaisseur, de couleur... voila ou j'en suis : stop(); // INITIAL SETTINGS var selectedColor = 0x000000; var canDraw:Boolean= false; // ce bool authorise ou non le dessin var drag:Boolean = false; var firstTime:Boolean = true; var var_container:MovieClip = new MovieClip(); // je me sert de ce mc que container de var var_container.tool="doodleLine"; var_container.selectedSize=1; var nbDrawing = 1; var bgColor = 0x000000; var posStartX:Number = new Number(); var posStartY:Number = new Number(); var startX; var startY; var my_container:Sprite = new Sprite(); my_container.x=0; my_container.y=0; addChild(my_container); // DRAW DETECTING function candraw(event:MouseEvent):void { if (working_zone_i.hitTestPoint(event.stageX,event.stageY)) { posStartX = this.mouseX; posStartY = this.mouseY; canDraw = true; firstTime = true; } } function check_level(event:MouseEvent):void { if (working_zone_i.hitTestPoint(event.stageX,event.stageY)) { nbDrawing=nbDrawing+1; } canDraw=false; } function drawing(event:MouseEvent):void { if(canDraw) { doDraw(); } } stage.addEventListener(MouseEvent.MOUSE_DOWN,candraw); stage.addEventListener(MouseEvent.MOUSE_UP,check_level); stage.addEventListener(MouseEvent.MOUSE_MOVE,drawing); //DRAWING FUNCTION function doDraw() { switch (var_container.tool) { case "line" : drawLine(); break; case "doodleLine" : drawDoodleLine(); break; case "oval" : drawOval(); break; case "square" : drawSquare(); break; default:drawDoodleLine(); } } function drawLine() { if (working_zone_i.hitTestPoint(mouseX,mouseY)) { var line:Sprite = new Sprite(); my_container.addChild(line); line.graphics.lineStyle(var_container.selectedSize,selectedColor); line.graphics.moveTo(posStartX,posStartY); line.graphics.lineTo(mouseX,mouseY); } } function drawDoodleLine() { if (working_zone_i.hitTestPoint(mouseX,mouseY)) { var doodleLine:Sprite = new Sprite(); my_container.addChild(doodleLine); if(firstTime) { startX = posStartX; startY = posStartY; firstTime = false; } doodleLine.graphics.lineStyle(var_container.selectedSize, selectedColor); doodleLine.graphics.moveTo(startX,startY); doodleLine.graphics.lineTo(mouseX, mouseY); startX = mouseX; startY = mouseY; } } function drawSquare() { var square:Sprite = new Sprite(); my_container.addChild(square); square.graphics.lineStyle(var_container.selectedSize,selectedColor); square.graphics.drawRect(0,0,this.mouseX-posStartX,this.mouseY-posStartY); square.x = posStartX; square.y = posStartY; } function drawOval() { if (working_zone_i.hitTestPoint(mouseX,mouseY)) { var oval:Sprite = new Sprite(); my_container.addChild(oval); oval.graphics.lineStyle(1,selectedColor); var a:Number = (posStartX-this.mouseX)*(posStartX-this.mouseX); var b:Number = (posStartY-this.mouseY)*(posStartY-this.mouseY); var rad:Number = Math.sqrt(a+b); oval.graphics.beginFill(bgColor,1.0); oval.graphics.drawCircle(posStartX,posStartY,rad); oval.graphics.endFill(); } } function remove_all(event:MouseEvent):void { removeChild(my_container); reset_btn.removeEventListener(MouseEvent.CLICK,remove_all); } reset_btn.addEventListener(MouseEvent.CLICK,remove_all); function new_draw(event:MouseEvent):void { my_container = new Sprite(); my_container.x=0; my_container.y=0; addChild(my_container); reset_btn.addEventListener(MouseEvent.CLICK,remove_all); } new_btn.addEventListener(MouseEvent.CLICK,new_draw); // ************************** COLOR PALETTE ************************ pour ce qui est du changement de taille et de couleur je me debrouille (bien que si quelqu'un a une paltte de couleur toute prete et qui marche je dit pas non ) Voila mes petits probs : - hit zone : je fais un test de hitzone pour svaoir si j'ai le droit de dessiner... le truc c'est que quand je cree un cercle par exemple, sa surface ne fait plus partie de la surface de dessin et donc je ne peux plus dessiner dessus... comment je pourrai ruser la dessus ? - detection du dessin : poiur les 3 modes ligne droite, carre, et rectangle, l'evenement mouse_click convient tres bien. en revanche pour le doodleline, le crayon, ca ne va pas. J'ai besoin d'un mouse_move. Alors j'ai bien essaye de remove et add les event dont j'ai besoin seulement mon souci : ma palette de selection de taille et d'outils est un composant integre dans ma scene principale. en clair il est dans ma librairie, je l'ai pose dessus, programme et il marche. Seulement je ne sais pas comment acceder aux fonctions contenu dans ma scene principale... - remplir des zones vides, aucune idee de comment faire si quelqu'un a quelques tips ! merci d'avance ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 27 juillet 2009 Partager Posté(e) le 27 juillet 2009 - hit zone : je fais un test de hitzone pour svaoir si j'ai le droit de dessiner... le truc c'est que quand je cree un cercle par exemple, sa surface ne fait plus partie de la surface de dessin et donc je ne peux plus dessiner dessus... comment je pourrai ruser la dessus ?si quelqu'un a quelques tips ! merci d'avance ! Pas compris Tu ne fais que des hitTestPoint or ces tests ne prennent pas en compte le fait qu'il y ait des objets au-dessus du point à tester si je ne me trompe ? - detection du dessin : poiur les 3 modes ligne droite, carre, et rectangle, l'evenement mouse_click convient tres bien. en revanche pour le doodleline, le crayon, ca ne va pas. J'ai besoin d'un mouse_move. Alors j'ai bien essaye de remove et add les event dont j'ai besoin seulement mon souci : ma palette de selection de taille et d'outils est un composant integre dans ma scene principale. en clair il est dans ma librairie, je l'ai pose dessus, programme et il marche. Seulement je ne sais pas comment acceder aux fonctions contenu dans ma scene principale... Pas trop compris non plus - remplir des zones vides, aucune idee de comment faire Ca c'est compréhensible . Le principe en gros - Aplanir ton image dans un bitmapdata histoire d'avoir tous les éléments du dessin au même endroit - Récupérer la couleur du pixel cliqué (getPixel) et définir la marge d'erreur qui va te permettre de dire à partir de quand tu vas dire "stop" parceque la différence entre la couleur de départ et la couleur du pixel à traiter est trop grande - En partant du point de départ cliqué, mettre en place un petit algo de flood fill pour parcourir la zone à remplir, en t'arrêtant là où la couleur est trop différente de la couleur du pixel cliqué.. Ça peut paraitre un peu effrayant comma ça mais ça peut être fun si tu te prends au jeu . Si tu veux garder le remplissage sur un DisplayObject différend tu peux dessiner tes pixels sur un second BitmapData, que tu ajouteras à ton dessin à la fin en jetant l'image aplatie. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 28 juillet 2009 Auteur Partager Posté(e) le 28 juillet 2009 - hit zone : je fais un test de hitzone pour svaoir si j'ai le droit de dessiner... le truc c'est que quand je cree un cercle par exemple, sa surface ne fait plus partie de la surface de dessin et donc je ne peux plus dessiner dessus... comment je pourrai ruser la dessus ?si quelqu'un a quelques tips ! merci d'avance ! Pas compris Tu ne fais que des hitTestPoint or ces tests ne prennent pas en compte le fait qu'il y ait des objets au-dessus du point à tester si je ne me trompe ? ben apparement si et ca m'embete un peu beaucoup... - detection du dessin : poiur les 3 modes ligne droite, carre, et rectangle, l'evenement mouse_click convient tres bien. en revanche pour le doodleline, le crayon, ca ne va pas. J'ai besoin d'un mouse_move. Alors j'ai bien essaye de remove et add les event dont j'ai besoin seulement mon souci : ma palette de selection de taille et d'outils est un composant integre dans ma scene principale. en clair il est dans ma librairie, je l'ai pose dessus, programme et il marche. Seulement je ne sais pas comment acceder aux fonctions contenu dans ma scene principale... Pas trop compris non plus j'ai reussi - remplir des zones vides, aucune idee de comment faire Ca c'est compréhensible . Le principe en gros - Aplanir ton image dans un bitmapdata histoire d'avoir tous les éléments du dessin au même endroit - Récupérer la couleur du pixel cliqué (getPixel) et définir la marge d'erreur qui va te permettre de dire à partir de quand tu vas dire "stop" parceque la différence entre la couleur de départ et la couleur du pixel à traiter est trop grande - En partant du point de départ cliqué, mettre en place un petit algo de flood fill pour parcourir la zone à remplir, en t'arrêtant là où la couleur est trop différente de la couleur du pixel cliqué.. Ça peut paraitre un peu effrayant comma ça mais ça peut être fun si tu te prends au jeu . Si tu veux garder le remplissage sur un DisplayObject différend tu peux dessiner tes pixels sur un second BitmapData, que tu ajouteras à ton dessin à la fin en jetant l'image aplatie. - Aplanir ton image dans un bitmapdata histoire d'avoir tous les éléments du dessin au même endroit ca ca m'interesse je fais comment ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 28 juillet 2009 Partager Posté(e) le 28 juillet 2009 Ca va ressembler à ça : public function aplanir(zone:DisplayObject): BitmapData { var resultat:BitmapData = new BitmapData(zone.width, zone.height, true, 0); resultat.draw(zone); return resultat; } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 28 juillet 2009 Auteur Partager Posté(e) le 28 juillet 2009 doit etre mis dans un package ok... mais j'en fais quoi de resultat ? je la superpose a ma zone de dessin ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 28 juillet 2009 Auteur Partager Posté(e) le 28 juillet 2009 in fact ce n'est pas vraiment le hittest le probleme... c'est uniquement la methode drawCircle(); quand je veux dessiner par dessus un cercle, ca me dit que j'ai le droit mais ca ne marche pas( impossible de prendre un point de depart dans le cercle... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 29 juillet 2009 Partager Posté(e) le 29 juillet 2009 Deja si j'étais toi j'utiliserai drawEllipse plutôt que drawCircle. Enfin c'est même obligatoire pour dessiner des éllipses. Après dessiner tous les calques sur un bitmapdata c'est bien mais ce n'est que la première étape du remplissage d'une zone.. Pour mettre un bitmap data dans ta display list tu a des méthodes pour copier le contenu d'un BitmapData dans les graphiques d'un sprite.. Dans tous les cas je te conseille vivement de te documenter sur les classes Graphics et BitmapData qui sont les outils de base pour le dessin en AS3 ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.