決め打ちスライドショー
フリッカーAPIを使って、4秒ごとにフェードイン、フェードアウト。
♥0 |
Line 81 |
Modified 2011-05-11 14:43:29 |
GPLv3 License
archived:2017-03-20 03:34:56
ActionScript3 source code
/**
* Copyright megane_bomb1 ( http://wonderfl.net/user/megane_bomb1 )
* GNU General Public License, v3 ( http://www.gnu.org/licenses/quick-guide-gplv3.html )
* Downloaded from: http://wonderfl.net/c/5LXV
*/
// forked from megane_bomb1's 5
// forked from megane_bomb1's 3
package {
import flash.display.*;
import flash.net.*;
import flash.events.*;
import flash.system.*;
import flash.text.*;
import com.demonsters.debugger.MonsterDebugger;
import caurina.transitions.Tweener;
[SWF(backgroundColor = "0")]
public class Main extends Sprite {
// LoaderContextを準備
private var context:LoaderContext = new LoaderContext(true);
//XML系
private var url : URLRequest = new URLRequest("http://api.flickr.com/services/rest?api_key=d66685810fb12432a61842b076228d2e&method=flickr.photos.search&tags=red&size=Medium");
private var xmlloader : URLLoader = new URLLoader();
//要素の数
private var length:int;
private var index:int = 0;
//画像URL格納
private var imageUrl_arr:Array = new Array();
private var load_img:Loader = new Loader();
private var url_str:String;
private var url_img:URLRequest;
//コンストラクタ
public function Main():void {
MonsterDebugger.initialize(stage);
setStage();
loadxml();
}
//-------------------------------------------------------
// ステージの設定
//-------------------------------------------------------
private function setStage():void {
stage.addEventListener( Event.RESIZE, resizeH);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
}
//-------------------------------------------------------
//XML読み込み
//-------------------------------------------------------
private function loadxml():void {
xmlloader.load(url);
xmlloader.addEventListener (Event.COMPLETE,get_imgURL);
}
private function get_imgURL( event:Event ):void {
//XMLDATA抽出
var xml : XML = new XML(xmlloader.data);
var xmlList:XMLList = xml.photos.photo;
length = xmlList.length();
for(var i:int=0;i<length;i++){
//URL格納オブジェクト
var obj:Object = new Object();
//XML各要素を格納
var farm:String = xmlList[i].@farm;
var server:String = xmlList[i].@server;
var id:String = xmlList[i].@id;
var secret:String = xmlList[i].@secret;
var title:String = xmlList[i].@title;
var userID:String = xmlList[i].@owner;
var img_url:String = "http://farm" + farm + ".static.flickr.com/" + server + "/" + id + "_" + secret + "_b" +".jpg";
obj.url = img_url;
obj.title = title;
obj.userID = userID;
//画像情報を配列に格納
imageUrl_arr.push(obj);
}
img_addchild();
}
//-------------------------------------------------------
//画像roop
//-------------------------------------------------------
private function img_addchild():void{
//読み込んだ画像の数
if(index == length){
index = 0;
}
index += 1;
url_str = imageUrl_arr[index].url;
url_img = new URLRequest(url_str);
load_img.load(url_img,context);
load_img.contentLoaderInfo.addEventListener( Event.COMPLETE , resize );
}
//-------------------------------------------------------
//画像リサイズ
//-------------------------------------------------------
private function resize(event:Event):void{
resizeH(event);
addChild(load_img);
//スライドショー
Tweener.addTween(load_img, {alpha:1, time:2});
Tweener.addTween(load_img, {delay:2, alpha:0,time:3,onComplete:img_addchild});
}
private function resizeH(event:Event):void{
load_img.scaleX = 1;
load_img.scaleY = 1;
var scale:Number = 0;
// 比率を計算するよ。
scale = Math.min(stage.stageWidth/load_img.width, stage.stageHeight/load_img.height);
// 画像に比率を適応するよ。
scale = scale - 0.06;
load_img.scaleX = load_img.scaleY = scale;
//中央寄せ
load_img.x = (stage.stageWidth - int(load_img.width))/2;
load_img.y = (stage.stageHeight - int(load_img.height))/2;
}
}
}