Just in time! flickr implemented a crossdomain.xml on their flickr image servers. This finally allows to use the BitmapData.draw() command with images downloaded from flickr.com without having to route it through a proxy on your own domain first. Unfortunately their api was getting flooded and started slowing down on me considerably, like sloooooow.
One thing you have to watch out for if you are going to adapt your old AS2 code to these changes is that it is not enough to just download the images directly. You will have to instruct Flash first to download the new policy files from the flickr servers whenever it tries to access them. Since flickr distributes its images across several servers that have different domains like http://farm2.static.flickr.com, http://farm3.static.flickr.com and so on the easiest way to accomplish that is to use the MovieClipLoader class and to set its checkPolicyFile property to “true”. This will instruct Flash to check for the crossdomain.xml file automatically on the respective server. Attention: In order to do that you will have to publish your files to Flash Player 9 since Flash 8 doesn’t support that property.
Here’s a simple AS2 example:
import flash.display.BitmapData;
var holder:MovieClip = createEmptyMovieClip(“test”,0);
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.checkPolicyFile = true;
mcl.loadClip(“http://farm2.static.flickr.com/1395/776413036_ea6bf98846_m_d.jpg”,holder);
mcl.addListener( this );
var holder2:MovieClip = createEmptyMovieClip(“test2″,1);
function onLoadInit()
{
var bm:BitmapData = new BitmapData( holder._width,holder._height,false,0)
bm.draw(holder);
holder2.attachBitmap(bm,0);
holder2._x = holder._x + holder._width + 2;
}
The alternative way would be to use System.security.loadPolicyFile() but you will have to do that for every farm that you access – it is not enough just to load it from http://static.flickr.com/crossdomain.xml
AS3 way of doing it