Загружать изображения из ленты Flickr в AS3

Я работаю в Adobe Flash CS5.5 (с ActionScript 3.0) и пытаюсь вставить канал Flickr. Я хочу, чтобы изображения Flickr отображались в виде галереи. Пока это мой код, и его результатом является лента Flickr в ТЕКСТе. Как сделать так, чтобы отображались реальные изображения?

import fl.controls.TextArea; 

var xmlLoader:URLLoader = new URLLoader(); 
var xmlData:XML = new XML(); 
var texten:TextArea = new TextArea(); 

xmlLoader.load(new URLRequest("http://api.flickr.com/services/feeds/photos_public.gne?tags=snow&format=rss_200"));
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);

function LoadXML(e:Event):void {
    xmlData = new XML(e.target.data);
    trace(xmlData);
    texten.move(25,25);
    texten.setSize(500, 300); 
    addChild(texten);
    ParseXML(xmlData); 
}

function ParseXML(vaderInput:XML):void {
    var i:int = 0;  
    for each (var object:XML in vaderInput.channel.item) {
        texten.text += "" + object.title + "\r";
        texten.text += "" + object.description + "\r";
        texten.text += "\r";
        i++;
    } 
}

function ioErrorHandler(e:Event):void {
    trace('ERROR!');
    trace('Problems reading the XML-file!'); 
}

person user1390252    schedule 14.03.2013    source источник
comment
У вас есть URL-адреса в вашем фиде? Если да, создайте URLLoader для получения каждого из них и работайте с результатами в виде изображений.   -  person Vesper    schedule 14.03.2013
comment
Я не уверен, что понимаю, что вы имеете в виду. Можете ли вы показать, как будет выглядеть код?   -  person user1390252    schedule 14.03.2013
comment
Вы должны загружать изображение точно так же, как вы загружаете XML, но вместо разбора XML вы куда-то добавляете свое изображение. Код в основном такой же, как ваш код загрузчика XML.   -  person Vesper    schedule 14.03.2013
comment
Я пытался использовать URLLoaders, но не могу заставить его работать. Я не привык работать с actionscript, поэтому мне нужна помощь!   -  person user1390252    schedule 14.03.2013


Ответы (1)


Читайте LiveDocs. Вы хотите использовать Loader для загрузить данные <media:thumbnail/> в XML. Класс Loader расширяет DisplayObject, но включает в себя многие из тех же свойств/методов, которые использует URLLoader.

Итак, в основном, вы делаете что-то вроде этого:

var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener( Event.INIT, loaderInitHandler ); //the majority of events for Loader are attached to its contentLoaderInfo property. That is the only reason I included this line
l.load( new URLRequest( /*url goes here*/ );
this.addChild( l );

Это загружает изображение и немедленно добавляет его на сцену. Как только изображение загрузится полностью (насколько мне известно, Flash не может отображать частично загруженные изображения), оно будет доступно для просмотра на сцене.

Оттуда вы можете рассматривать загрузчик, по большей части, как еще один Sprite/MovieClip.

person Josh    schedule 14.03.2013
comment
В пустом проекте вставьте приведенный выше код (и только этот код) в проект и попробуйте загрузить google.com/images/srpr/logo4w.png (логотип Google). Loader — это способ загрузки изображений в AS3. Оно работает. Именно для этого и предназначен класс. Либо URL-адрес, который вы пытаетесь загрузить, неверен, либо вы что-то испортили по пути. - person Josh; 15.03.2013
comment
На самом деле, я все еще не могу заставить его работать, даже если я только использую этот код. Не знаю почему. Но логотип Google — это изображение... URL-адрес Flickr, который я использую, — это RSS-канал. Если я использую этот код, я могу увидеть изображение: var imageLoader:Loader = new Loader(); var image:URLRequest = new URLRequest("http://natur.suntuubi.se/datafiles/gallery/1/lejon%20som%20ryter.jpg"); imageLoader.load(image); addChild (imageLoader); imageLoader.x = 200; imageLoader.y = 300; Но я не могу использовать свой RSS-URL таким образом. Кроме того, RSS содержит множество изображений, а не одно. - person user1390252; 15.03.2013
comment
Я только что попробовал именно этот код, используя farm9.staticflickr.com/8373/8560195640_fae1010eb5_b.jpg как URL-адрес (взятый непосредственно из RSS), и он отлично работает. Вы уверены, что правильно обращаетесь к XML? Доступ к XML с помощью пространств имен требует немного больше усилий, чем стандартный XML. Отследите URL-адрес, который вы пытаетесь загрузить, и посмотрите, что это такое. Моя догадка? Это либо пустая строка, либо нуль. - person Josh; 15.03.2013
comment
Да, но этот URL также заканчивается на .jpg... Мой URL заканчивается на rss_200. Почувствуйте, что это как-то связано с этим. Как я уже говорил, я могу заставить jpg-URL нормально работать. - person user1390252; 19.03.2013
comment
Вместо использования RSS, с которым у Flash проблемы, почему бы не использовать JSON? api.flickr.com/services/feeds/ rss_200 просто описывает, в каком формате вы хотите получить данные. JSON гораздо проще анализировать и использовать, чем XML с пространствами имен. - person Josh; 19.03.2013
comment
Спасибо! Я где-то читал раньше, что во Flash нужно использовать JSON, но забыл. Однако я не знаю, как использовать JSON-код в AS3 - при попытке получить ошибку безопасности. - person user1390252; 20.03.2013