img view
forked from forked from: いじる (diff: 366)
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/iJ5H
*/
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;
import caurina.transitions.properties.FilterShortcuts;
import flash.utils.Timer;
[SWF(backgroundColor = "0")]
public class Main extends Sprite {
public var obj:Object;
public var img_obj:Object;
private var index:int;
//class
public var xml:XmlLoad = new XmlLoad();
public var img:ImgView = new ImgView();
private var _timer:Timer = new Timer(2000);
//コンストラクタ
public function Main():void {
MonsterDebugger.initialize(stage);
FilterShortcuts.init();
xml.addEventListener("myEvent",View);
setStage();
xml.url_str = "http://api.flickr.com/services/rest?api_key=d66685810fb12432a61842b076228d2e&method=flickr.photos.search&tags=flower&size=medium"
xml.loadxml();
}
public function timer():void{
_timer.addEventListener(TimerEvent.TIMER, loop);
_timer.start();
}
private function loop(event:Event):void{
if( xml.imageUrl_arr.length == index){
index = 0;
}
img = new ImgView();
img.addEventListener("sprite",addimg);
img.addEventListener("remove_sprite",remove);
img.index = index;
img.imageUrl_arr = xml.imageUrl_arr;
img.img_addchild();
index = index + 1;
}
private function View(event:Event):void{
timer();
}
private function addimg(event:Event):void{
addChild(event.target.sprite);
event.target.sprite.addEventListener( Event.ENTER_FRAME, img_down );
}
private function remove(event:Event):void{
removeChild(event.target.sprite);
}
private function img_down(event:Event):void{
event.target.y += 3;
if(event.target.y >= stage.stageHeight){
//MonsterDebugger.trace(this,event.target);
event.target.removeEventListener(MouseEvent.CLICK,img.jump);
event.target.removeEventListener(MouseEvent.ROLL_OVER,img.roll_over);
event.target.removeEventListener(MouseEvent.ROLL_OUT,img.roll_out);
removeChild(Sprite(event.target));
}
}
private function setStage():void {
stage.quality = "BEST";
stage.addEventListener( Event.RESIZE, resizeH);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
Hoge.stage = stage;
}
//変更された比率を格納する(リサイズ時)
private function resizeH(event:Event):void{
//scale
var height_s:Number = 1;
var width_s:Number = 1;
width_s = stage.stageWidth / 465;
height_s = stage.stageHeight / 465;
}
}
}
import com.demonsters.debugger.MonsterDebugger;
import caurina.transitions.Tweener;
import caurina.transitions.properties.FilterShortcuts;
import flash.filters.BlurFilter;
class ImgView extends EventDispatcher {
public var sprite:Sprite;
public var index:int;
public var imageUrl_arr:Array;
private var userID:String;
private var ID:String;
private var load_img:Loader;
//画像loop
public function img_addchild():void{
var url_str:String;
var url_img:URLRequest;
url_str = imageUrl_arr[index].url;
url_img = new URLRequest(url_str);
var context:LoaderContext = new LoaderContext(true);
load_img = new Loader();
load_img.load(url_img,context);
load_img.contentLoaderInfo.addEventListener( Event.COMPLETE , img_create ,false, 0, true);
load_img.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError,false, 0, true);
}
//画像生成
public function img_create(event:Event):void{
var my_blur:BlurFilter = new BlurFilter();
var height_s:Number = 1;
var width_s:Number = 1;
load_img.contentLoaderInfo.removeEventListener( Event.COMPLETE , img_create);
userID = imageUrl_arr[index].userID;
ID = imageUrl_arr[index].id;
//bitmapをspriteに!(大切)
sprite = new Sprite();
//sprite.filters = [my_blur];
Bitmap(event.target.content).smoothing = true;
sprite.addChild(event.target.content);
//MouseEvent系
sprite.addEventListener(MouseEvent.CLICK,jump);
sprite.addEventListener(MouseEvent.ROLL_OVER,roll_over);
sprite.addEventListener(MouseEvent.ROLL_OUT,roll_out);
//sprite.addEventListener(MouseEvent.ROLL_OUT,roll_out,false, 0, true);
//ramdom
sprite.x = Math.random()* Hoge.stage.stageWidth;
sprite.scaleX = sprite.scaleY = ((2 + (Math.random() * 5)) / 10) * width_s;
sprite.y = 0 - sprite.height;
var blur:int = 10 - (sprite.scaleX * 10);
my_blur.blurX = my_blur.blurY = blur; // 水平方向のぼかし量
my_blur.quality = 1; // ぼかしの実行回数
sprite.filters = [my_blur];
dispatchEvent(new Event("sprite"));
}
//マウスイベント系
public function jump(event:Event):void{
var url:URLRequest = new URLRequest("http://www.flickr.com/photos/" + imageUrl_arr[index].userID + "/" + imageUrl_arr[index].id );
navigateToURL (url);
}
public function roll_over(event:Event):void{
event.target.alpha = 0.7;
}
public function roll_out(event:Event):void{
event.target.alpha = 1;
}
//IOError
private function onIOError(event:Event):void{
load_img.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
}
}
import flash.display.Stage;
class Hoge {
public static var stage:Stage;
}
import flash.display.*;
import flash.net.*;
import flash.events.*;
import flash.system.*;
import com.demonsters.debugger.MonsterDebugger;
//URL渡すだけで良いように変更する
class XmlLoad extends EventDispatcher {
public var imageUrl_arr:Array = new Array();
public var url_str:String;
//private var url : URLRequest;
private var xmlloader : URLLoader;
public function loadxml():void{
var url:URLRequest = new URLRequest(url_str);
xmlloader = new URLLoader(url);
xmlloader.load(url);
xmlloader.addEventListener (Event.COMPLETE,get_imgURL);
}
public function get_imgURL( event:Event ):void {
xmlloader.removeEventListener (Event.COMPLETE,get_imgURL);
var length:int = 0;
//XMLDATA抽出
var xml : XML = XML(xmlloader.data);
var xmlList:XMLList = xml.photos.photo;
length = xmlList.length();
if (length == 0) {
//error();
}else{
//tag_name(search_text.text);
for(var i:int=0;i<length;i++){
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 + "_m" +".jpg";
obj.url = img_url;
obj.title = title;
obj.userID = userID;
obj.id = id;
//画像情報を配列に格納
imageUrl_arr.push(obj);
}
dispatchEvent(new Event("myEvent"));
}
}
}
