MediaRSS Viewer Test
セキュリティサンドボックス侵害で詰まる人が出るだろうと思ったので、
ロードしたデータをBitmapDataに書き込むサンプル
/**
* Copyright shohei909 ( http://wonderfl.net/user/shohei909 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/luwz
*/
// forked from Event's Simple MediaRSS Viewer
// セキュリティサンドボックス侵害で詰まる人が出るだろうと思ったので、
// ロードしたデータをBitmapDataに書き込むサンプル
package {
import flash.geom.Matrix;
import flash.system.LoaderContext;
import flash.net.URLRequest;
import flash.events.Event;
import flash.net.URLLoader;
import flash.display.*;
public class MediaRSSReader extends Sprite {
private var _feed:String = "http://api.flickr.com/services/feeds/photos_public.gne?tags=kamakura&format=rss_200";
private var media:Namespace = new Namespace("http://search.yahoo.com/mrss/");
public function MediaRSSReader() {
var ldr:URLLoader = new URLLoader;
ldr.addEventListener(Event.COMPLETE, function _load(e:Event):void {
ldr.removeEventListener(Event.COMPLETE, _load);
onImageLoaded(XML(ldr.data)..media::thumbnail.@url.toXMLString().split('\n'));
});
ldr.load(new URLRequest(_feed));
}
private function onImageLoaded($images:Array):void {
var container:Bitmap = new Bitmap(new BitmapData(465,465,true,0xFF000000));
var ldr:Array = [];
for (var i:int = 0; i < $images.length; ++i) {
ldr[i] = new Loader;
//Loaderで読み込んだ画像を後でBitmapDataに書き込む場合
//第二引数にnew LoaderContext(true)を指定する必要があります
ldr[i].load(new URLRequest($images[i]), new LoaderContext(true));
ldr[i].x = (i % 5) * 85;
ldr[i].y = Math.floor(i / 5) * 85;
ldr[i].contentLoaderInfo.addEventListener(Event.COMPLETE, function _load(e:Event):void {
var tgt:Loader = e.currentTarget.loader;
e.currentTarget.removeEventListener(Event.COMPLETE, _load);
container.bitmapData.draw( tgt, new Matrix(1,0,0,1,tgt.x,tgt.y) );
});
}
addChild(container);
}
}
}