Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1478 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [AS3] Propriété custom sur un évènement souris + AJAX + SWFaddress

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[AS3] Propriété custom sur un évènement souris + AJAX + SWFaddress

n°1850568
lkolrn
<comment ça marche?>
Posté le 12-02-2009 à 21:06:54  profilanswer
 

Bonjoir,
 
je suis en train de faire un petit diaporama de recettes de cuisine en Flash/AS3, et j'ai 3 2 1 questions pour les spécialistes.
 
Le programme charge la liste d'images (depuis xml) dans un scrollbar horizontal, et laisse l'utilisateur cliquer sur les images de recettes qui l'intéressent afin de charger la dite recette en HTML au-dessus du diaporama. Chaque nouveau clic entraine la modification de la zone HTML et son remplacement par une nouvelle recette SANS RECHARGEMENT de la page.
 
Mon fichier xml contient la liste des images, chaune d'entre elles possede 2 propriétés : un chemin (celui du fichier image sur disque) et un ID (celui de la recette HTML que je recupèrerai plus tard)
 
1. Je cherche à associer chaque image dans AS3 à chaque ID dans xml, de telle sorte qu'au clic je puisse récupérer le fameux ID et chercher après la bonne recette.
Mes images sont des instances de Loader, je parcours mon xml et charge chaque image grâce à son loader dédié :

Code :
  1. /* Chargement du xml */
  2. private function loadImagesPath():void
  3. {
  4.   var urlLoader:URLLoader = new URLLoader(); //conteneur de chargement du fichier XML
  5.   urlLoader.addEventListener(Event.COMPLETE, loadImagesPathCompleted); //abonnement à l'événement Event.COMPLETE
  6.   urlLoader.addEventListener(IOErrorEvent.IO_ERROR, loadImagesPathIoError); //abonnement à l'événement IOErrorEvent.IO_ERROR
  7.   urlLoader.load(new URLRequest("xml/RecipeSlideshow.xml" )); //chargement du fichier XML
  8. }
  9. /* Chargement des images */
  10. private function loadImagesPathCompleted(evt:Event):void
  11. {
  12.   xml = new XML(evt.target.data); //Récupération du flux XML
  13.   xmlList = xml.elements(); //Récupération de la liste des noeuds image
  14.   for each(var image:XML in xmlList)
  15.   {
  16.    var loader:Loader = new Loader(); //conteneur pour chaque image
  17.    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadImageCompleted); //abonnement à l'événement Event.COMPLETE
  18.    loader.load(new URLRequest(image.@path)); //chargement de l'image
  19.   }
  20. }
  21. /* Chargement de chaque image */
  22. private function loadImageCompleted(evt:Event):void
  23. {
  24.   thumbsContainer.addEventListener(Event.ADDED, imageAdded); //abonnement du conteneur des vignettes à l'événement Event.ADDED
  25.   var loader:Loader = evt.target.loader; //conteneur de l'image
  26.   loader.width = 135; //largeur de la vignette
  27.   loader.height = 105; //hauteur de la vignette
  28.   thumbsContainer.addChild(loader); //ajout de la vignette dans le conteneur
  29. }
  30. /* Positionnement des images et callback sur clic souris */
  31. private function imageAdded(evt:Event):void
  32. {
  33.   var loader:Loader = evt.target as Loader; //la vignette qui est ajoutée
  34.   var conteneur:Sprite = evt.currentTarget as Sprite; //le conteneur des vignettes
  35.   var index:int = conteneur.getChildIndex(loader); //l'index dans la liste d'affichage
  36.   if(index != 0) //si la vignette n'est pas la première
  37.   {
  38.    var previousX:Number = conteneur.getChildAt(index - 1).getBounds(conteneur).right; //coordonnée X du côté droit de la vignette précédemment ajoutée
  39.    loader.x = previousX + SPACE_BETWEEN_THUMBS; //positionnement de la vignette 10 pixels après la vignette précédente
  40.   }
  41.   loader.addEventListener(MouseEvent.CLICK, vignetteClic); //abonnement à l'événement clic
  42. }
  43. /* Listener de clic souris */
  44. private function vignetteClic(evt:MouseEvent):void
  45. {
  46.   var loader:Loader = evt.target as Loader;
  47. }


Je ne sais pas du tout à quel objet associer mon ID (image.@id). J'ai essayé de rajouter une propriété "id" au Loader pour la récupérer au clic, mais la classe Loader m'en empêche. [:airforceone]
 
 
2. Le clic sur une image entraine l'affichage de la recette, mais j'ai pour imperatif de ne pas recharger la page (et donc le Flash) à chaque clic. Je suppose qu'il faut passer par une couche JS depuis laquelle je ferais un appel "AJAX" afin de charger le contenu. Est-ce la bonne demarche ? Sachant que je ne sais pas (encore) si Flash est capable de lancer un script JS...
 
 
3. Il faudrait que l'url soit dédiée à chaque recette, sans pour autant recharger le contenu à chaque appel. SWFaddress est-il mon ami dans ce cas ?
 
 
Posez-moi des questions sur les points pas clairs, j'essaierai (compte-tenu de mon pov' niveau en AS) de vous répondre [:bbcmoi]


Message édité par lkolrn le 15-02-2009 à 23:51:18
mood
Publicité
Posté le 12-02-2009 à 21:06:54  profilanswer
 

n°1850583
lkolrn
<comment ça marche?>
Posté le 12-02-2009 à 21:43:55  profilanswer
 

Je viens d'y penser (sisi, ca m'arrive des fois) : pour le point 1 je pourrais ptet deriver la classe Loader et lui ajouter la/les proprietes dont j'ai besoin...
 
V tenter de suite

n°1850593
lkolrn
<comment ça marche?>
Posté le 12-02-2009 à 21:55:35  profilanswer
 

easy :sol:  
 
Une inspiration pour les 2 points suivants ?
 
 :jap:  
 

n°1850621
lkolrn
<comment ça marche?>
Posté le 12-02-2009 à 23:35:20  profilanswer
 

Bon, ya un truc dans AS3 qui s'appelle ExternalInterface (import flash.external.ExternalInterface), et qui permet de faire des appels JS.
 
Pour ceux que ca intéresse :

Code :
  1. if(ExternalInterface.available)
  2. {
  3.    var js:String = new String("function(){alert('ahah!');}" );
  4.    ExternalInterface.call(js);
  5. }

n°1851591
lkolrn
<comment ça marche?>
Posté le 15-02-2009 à 23:50:11  profilanswer
 

A vot' bon coeur m'sieurs dames !
 
Juste pour la 3 => vais-je pouvoir m'en sortir avec SWFAddress ?
 
Je parcours la doc mais ca n'est pas super clair pour l'instant (pour moi)...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [AS3] Propriété custom sur un évènement souris + AJAX + SWFaddress

 

Sujets relatifs
[AJAX PHP]Rediriger dossiers d'un domaine vers la page d'accueilAS3 : é n'est pas converti dans un champ htmlText
Behavior problème gestion souris molette + deplacementPbm pour desactiver molette souris access 2003 avec dll
Menu déroulant au passage de la sourisprobleme ajax/js/php
Problème d'affichage dans AJAXScript Upload Ajax + miniature
[as3] probleme activation scroll moletteDeux scripts AJAX : l'un bloque l'autre...
Plus de sujets relatifs à : [AS3] Propriété custom sur un évènement souris + AJAX + SWFaddress


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR