写真を上からランダムで流す

by megane_bomb1 forked from 決め打ちスライドショー (diff: 51)
♥0 | Line 90 | Modified 2011-05-11 10:24:44 | 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/obq7
 */

// forked from megane_bomb1's 決め打ちスライドショー
// 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;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    import caurina.transitions.properties.FilterShortcuts;
    [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); 
          FilterShortcuts.init();
          setStage();
          loadxml();
        }
        
         //-------------------------------------------------------
         // ステージの設定   
         //-------------------------------------------------------         
         private function setStage():void {
           MonsterDebugger.trace(this,"first");
           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 + "_m" +".jpg";
              
                obj.url = img_url;
                obj.title = title;
                obj.userID = userID;
                
                //画像情報を配列に格納                
                imageUrl_arr.push(obj);
            }       
             timer();
         }

         //-------------------------------------------------------
         //timer
         //-------------------------------------------------------
        private function timer():void{          
            var _timer:Timer = new Timer(10000);
            _timer.addEventListener(TimerEvent.TIMER, img_addchild);
            _timer.start();    
        }
        
         //-------------------------------------------------------
         //画像roop
         //-------------------------------------------------------
        private function img_addchild(event:Event):void{ 
            var img:Array = new Array();
            //読み込んだ画像の数
            if(index == length){
                index = 0;
            }
            
            url_str = imageUrl_arr[index].url;
            url_img = new URLRequest(url_str);   
            load_img.load(url_img,context);
            index += 1;
            load_img.contentLoaderInfo.addEventListener( Event.COMPLETE , resize ); 
        }
        
         //-------------------------------------------------------
         //画像リサイズ
         //-------------------------------------------------------
        private function resize(event:Event):void{
             
             addChild(load_img.content);
             load_img.content.y = -50;
             lamdam();           
             Tweener.addTween(load_img.content, {y:1000,transition:"linear", time: 40 + (Math.random() * 10)});
             //滑らかにする     
             var bmp:Bitmap = Bitmap(load_img.content);
             bmp.smoothing = true;
        }


       private function lamdam():void{
           load_img.content.x = Math.random()* stage.stageWidth;
           load_img.content.scaleX = load_img.content.scaleY = (3 + (Math.random() * 7)) / 10;
           
           //ブラーとか明度
           var blur:int = 10 - (load_img.content.scaleX * 10);
           load_img.content.alpha = 1 - (blur/100 * 2);
           Tweener.addTween(load_img.content,{time:1,_Blur_blurX:blur,_Blur_blurY:1});
       }


    }
    
    
    
}

Forked