Action Script 3 - уникальные URL для изображений в галерее - PullRequest
1 голос
/ 23 августа 2010

В настоящее время я работаю над веб-сайтом и у меня есть флэш-галерея, но она хотела бы иметь возможность связывать клиентов с определенной фотографией в определенной галерее.Как бы я пошел о кодировании этого, потому что я знаю, что это возможно, но я не могу понять, как.Я использую Flash CS3 и AS3.

Ответы [ 3 ]

2 голосов
/ 23 августа 2010

Вы можете использовать библиотеку SWFAddress .

0 голосов
/ 24 августа 2010

Здесь не нужно делать ничего сложного ... Просто добавьте параметр в свой URL, идентифицирующий изображение.Вы можете передать этот параметр в FlashVars через Javascript, или вы можете напрямую связаться с SWF и прочитать его URL-адрес через Application.application.url.После прочтения параметра вы можете отобразить соответствующее изображение в формате swf (или в виде по умолчанию, если параметр отсутствует).

0 голосов
/ 24 августа 2010

Вы можете создать класс, который вы будете использовать для каждого изображения, у этого класса будет свойство url, но вы также можете иметь свойство gallery & client в зависимости от того, чего вы пытаетесь достичь.

При чтении данных из XML я склонен создавать свои объекты непосредственно из данных XML.

Например, я получал бы свой объект изображения из узла xml, подобного этому

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...

Затем вы можете хранить объекты Image в массиве и манипулировать ими по мере необходимости.Поскольку класс Image расширяет Sprite, вы можете рассмотреть возможность добавления загруженного растрового изображения к соответствующему объекту.

  //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 );
   } 

В классе Image добавьте прослушиватель MouseEvent для вызова navigateToURL, и если пользователь щелкнет изображение, он будетбыть перенаправлены на определенный URL изображения

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

Вот базовый пример:

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;
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...