Ok, è più semplice di quello che pensavo, evidentemente flickr ha il file crossdomain.xml ma in ogni caso bisogna dire al nostro filmato di controllare questa situazione.
C'era anche un errorino nel codice, per questo non ti caricava l'immagine, avevi dimenticato l'estensione quando provavi a caricare nel loader.
Per far funzionare il filmato basta aggiungere le parti in rosso.
codice:
function showFirstPhoto(event:Event):void
{
//debug
var myXML:XML = new XML(myXMLLoader.data);
trace(myXML.toXMLString());
txtDebug.text = myXML.toXMLString();
//if it’s not ok, there were no photos returned, check txtDebug for the error.
if (myXML.@stat == "ok")
{
var photo:XML = myXML.photos.photo[0];
//need to build URL like
//http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}_[mstb].jpg
var picURL:String = "http://farm";
picURL += photo.@farm;
picURL += ".static.flickr.com/";
picURL += photo.@server;
picURL += "/" + photo.@id;
picURL += "_" + photo.@secret + "_m";
picLarge.source = picURL + ".jpg";
trace(picURL);
trace(photo.@title);
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
var request:URLRequest = new URLRequest(picURL+".jpg");
loader.x = size * numChildren;
loader.load(request, context);
addChild(loader);
}
function completeHandler(event:Event):void {
var loader:Loader = Loader(event.target.loader);
var image:Bitmap = Bitmap(loader.content);
}
function ioErrorHandler(event:IOErrorEvent):void {
trace("Unable to load image");
}
}
Una cosa che non ho capito però è perchè usi sia il componente che il loader per caricare la stessa immagine. In ogni caso il tuo codice verrà applicato solo al Loader nella funzione completeHandler.