FlickrAPIを使って画像をロードするサンプルです。
「sky」って言葉で検索してきてます。
サンプルはこちら。
以下、ソースです。
package
{
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageQuality;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.system.Security;
import org.libspark.betweenas3.BetweenAS3;
[SWF(backgroundColor="0xFFFFFF")]
public class flickr_img_loader extends Sprite
{
private const API_KEY:String="api_key=APIのキーをいれとく";
private const API_URL:String="http://api.flickr.com/services/rest/?method=flickr.photos.search";
private const API_TAG:String="tags=sky";
private const PER_PAGE:String="per_page=40";
private var count:int;
private var delay:Number;
public function flickr_img_loader()
{
// ステージの設定
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
stage.quality=StageQuality.HIGH;
stage.frameRate=40;
// ポリシーファイルの読み込み
Security.loadPolicyFile("http://api.flickr.com/crossdomain.xml");
Security.loadPolicyFile("http://farm1.static.flickr.com/crossdomain.xml");
Security.loadPolicyFile("http://farm2.static.flickr.com/crossdomain.xml");
Security.loadPolicyFile("http://farm3.static.flickr.com/crossdomain.xml");
Security.loadPolicyFile("http://farm4.static.flickr.com/crossdomain.xml");
// APIにアクセス
count=0;
delay=0;
var api_loader:URLLoader=new URLLoader;
api_loader.addEventListener(Event.COMPLETE, onCompleteAccessAPI);
api_loader.load(new URLRequest(API_URL + "&" + API_KEY + "&" + API_TAG + "&" + PER_PAGE));
}
// APIへのアクセスが成功したら実行する関数
private function onCompleteAccessAPI(e:Event):void
{
var api_loader:URLLoader=e.target as URLLoader;
api_loader.removeEventListener(Event.COMPLETE, onCompleteAccessAPI);
// XMLのパースと画像のURLの作成・ロード
var xml:XML=XML(api_loader.data);
if (xml.@stat == "ok")
{
for each(var photo:XML in xml.photos.photo)
{
var url:String="http://farm" + photo.@farm + ".static.flickr.com/" + photo.@server + "/" + photo.@id + "_" + photo.@secret + ".jpg";
var img_loader:Loader=new Loader();
img_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompletePhotoLoad);
img_loader.load(new URLRequest(url), new LoaderContext(true));
}
}
}
// 画像のロードが終わったら実行する関数
private function onCompletePhotoLoad(e:Event):void
{
var img_loader:Loader=(e.target as LoaderInfo).loader;
img_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onCompletePhotoLoad);
// ロードした画像の表示
var bmp:Bitmap=img_loader.content as Bitmap;
bmp.scaleX=150 / bmp.width;
bmp.scaleY=150 / bmp.height;
bmp.x = 50 + 160*(count%8);
bmp.y = 50 + 160*((count/8) >> 0);
addChild(bmp);
bmp.alpha=0;
BetweenAS3.delay(BetweenAS3.tween(bmp,{alpha:1},null,1), delay).play();
count ++;
delay += 0.2;
}
}
}
