Flickrの画像を取得してPapervision3Dで動かす 
FlickrのAPIより画像を取得してPapervision3Dライブラリで3D上に配置するサンプルを作ってみました。
使用したライブラリは
tweener
papervision3D(ver1.7)
as3flickrlib
です。
注意事項として、
BitmapFileMaterialでFlickrなどの外部サーバの画像を表示するときに
ローカルでは問題なく表示できているのにサーバーにアップすると表示できない現象があります。
これは以下のサンドボックス制限によるものです。
表示リスト内の移動
「SWF ファイルから他のサンドボックスからロードされた表示オブジェクトにアクセスする機能は制限されます。SWF ファイルが別のサンドボックス内にある別の SWF ファイルによって作成された表示オブジェクトにアクセスするには、アクセスされる側の SWF ファイルが Security.allowDomain() メソッドを呼び出し、アクセスする側の SWF ファイルのドメインによるアクセスを許可する必要があります。詳細については、作成者 (開発者) コントロールを参照してください。
Loader オブジェクトでロードされた Bitmap オブジェクトにアクセスするには、クロスドメインポリシーファイルはイメージファイルのオリジンサーバー上に存在する必要があり、そのクロスドメインポリシーファイルは、SWF ファイルのドメインに、Bitmap オブジェクトへのアクセスを試みる許可を付与する必要があります。」
Flash Player セキュリティ > クロススクリプト引用
これを回避するために、頭に以下を記述します。
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");
あと、フルスクリーン表示も簡単にできます。
btn.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void{
toggleFullScreen();
});
function toggleFullScreen():void
{
if(stage.displayState == StageDisplayState.NORMAL)
{
stage.displayState = StageDisplayState.FULL_SCREEN;
}
else
{
stage.displayState = StageDisplayState.NORMAL;
}
}
swfobject.jsに
so.addParam("allowFullScreen", "true");を1行付け足します。
出来上がったのはこんなかんじです。
気持ちCNNやBBCの報道スタジオ風。
Flickr Servicesドキュメント
http://www.flickr.com/services/api/
APIキー取得
http://www.flickr.com/services/api/keys/
Flickr Api Explorer
http://flickr.com/services/api/explore/?method=flickr.photos.search
alt




