2010-08-23 2 views
1

Je travaille actuellement sur un site Web et j'ai une galerie flash qui fonctionne, mais j'aimerais pouvoir lier les clients à une photo spécifique dans une galerie spécifique. Comment pourrais-je coder ceci, parce que je sais que c'est possible mais je ne peux pas comprendre comment. J'utilise Flash CS3 et AS3.Script d'action 3 - URL uniques pour les images dans la galerie

+0

Pouvez-vous donner plus de détails? – PatrickS

Répondre

2

Vous pouvez utiliser la bibliothèque SWFAddress.

0

Vous pourriez créer une classe que vous utiliseriez pour chaque image, cette classe aurait une propriété url, mais vous pourriez également avoir une propriété client de galerie & en fonction de ce que vous essayez d'obtenir. Lorsque je lis des données à partir d'un fichier XML, j'ai tendance à créer mes objets directement à partir des données XML.

par exemple je recevrais mon objet image à partir d'un noeud XML comme celui-ci

 
images 
    image 
     ID   1         /ID 
    url  http://example.com/images/img1.jpg /url 
    client  John Smith       /client 
     clientURL http://clientSite.com/    /clientURL 
    galleryID 6         /galleryID 
    /image 
    etc... 
/images 
 
var imageData:XMLList = xml..images; 

//then I use a "for" loop to iterate thru imageData , inside the "for" loop I would have 
var image:Image = new Image(); 

//the return values are XMLList so they need to be coerced 
image.imageURL = String(imageData[i].url); 
image.clientURL = String(imageData[i].clientURL); 
etc... 

Vous pouvez stocker vos objets d'image dans un tableau et les manipuler comme vous avez besoin. Étant donné que la classe Image étend Sprite, vous pouvez envisager d'ajouter le bitmap chargé à l'objet correspondant.

 
    //if you're using a for loop 
    var image:Image = imagesArray[i] as Image; 
    loader.name = i.toString(); 
    loader.load(new URLRequest(image.imageURL)); 

    function completeHandler(event:MouseEvent):void 
    { 
    var index:int = int(event.currentTarget.loader.name); 
    var image:Image = imagesArray[index] as Image; 
    image.addChild(event.currentTarget.loader.content); 
    } 

Dans la classe d'image, ajoutez un écouteur de MouseEvent appeler navigateToURL et si un utilisateur clique sur l'image qu'elle sera redirigé vers l'image url spécifique

 
private function mouseClickHandler(event:MouseEvent):void 
{ 
    navigateToURL(new URLRequest(_clientURL)); 
} 

Voici un exemple de base:

 
package 
{ 
    import flash.display.Sprite; 

    public class Image extends Sprite 
    { 
     private var _client:String; 
     private var _galleryID:int; 
     private var _galleryName:String; 
     private var _imageID:int; 
     private var _imageURL:String; 


     public function Image() 
     { 
     } 

     public function get imageURL():String 
     { 
      return _imageURL; 
     } 

     public function set imageURL(value:String):void 
     { 
      _imageURL = value; 
     } 

     public function get imageID():int 
     { 
      return _imageID; 
     } 

     public function set imageID(value:int):void 
     { 
      _imageID = value; 
     } 

     public function get galleryName():String 
     { 
      return _galleryName; 
     } 

     public function set galleryName(value:String):void 
     { 
      _galleryName = value; 
     } 

     public function get galleryID():int 
     { 
      return _galleryID; 
     } 

     public function set galleryID(value:int):void 
     { 
      _galleryID = value; 
     } 

     public function get client():String 
     { 
      return _client; 
     } 

     public function set client(value:String):void 
     { 
      _client = value; 
     } 

    } 
} 
+0

c'est le plus proche vu à une solution mais j'ai oublié de mentionner que je remplis la galerie avec un fichier XML. Maintenant, je suis sûr qu'il existe un moyen de créer une boucle qui administre une URL en fonction de l'emplacement de l'image dans le fichier XML, mais je ne sais pas exactement comment s'y prendre non plus. – Mitchell

+0

vérifier le code édité ... Je n'ai pas ajouté chaque ligne de code, mais vous devriez être capable de sentir les blancs, sinon laissez-moi savoir – PatrickS

0

Pas besoin de faire quoi que ce soit de complexe ici ... Ajoutez simplement le paramètre à votre URL identifiant l'image. Vous pouvez passer ce paramètre à FlashVars via Javascript, ou vous pouvez lier directement à swf et lire son URL via Application.application.url. Après avoir lu le paramètre, vous pouvez afficher l'image correspondante dans swf (ou la vue par défaut si le paramètre est manquant).

Questions connexes