img view

by megane_bomb1 forked from forked from: いじる (diff: 366)
♥0 | Line 181 | Modified 2011-05-30 18:47:25 | GPLv3 License
play

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"));
          }
    }
}


    
    
    

Forked