3

by megane_bomb1
♥0 | Line 71 | Modified 2011-05-08 23:53:00 | 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/2Os8
 */

// forked from megane_bomb1's 3
package {
   
    //画面表示の構築のコア
    import flash.display.*;
    //load()などのメソッドに渡される
    import flash.net.URLRequest;
    //イベント系
    import flash.events.*;
    //LoaderContextのため
    import flash.system.*;
    //text表示
    import flash.text.*; 
    //Debug
    import com.demonsters.debugger.MonsterDebugger;
    
       

    public class Main extends Sprite {    
        // LoaderContextを準備
        private var context:LoaderContext = new LoaderContext(true);
        // イメージファイルをロードする
        private var load_img:Loader = new Loader();
        private var url:String = "http://farm2.static.flickr.com/1340/4727293104_c093890c85_b_d.jpg";
        //private var url:String = "http://www.flickr.com/photos/megane_bomb/4727293104/sizes/l/";
        
        //画像の場所の指定
        private var url_img:URLRequest=new URLRequest(url); 
        private var h:int = 0;
        private var aData:Array = new Array();
        //fullscreanの為のフラグ
        private var flg:int = 0;

        //コンストラクタ         
        public function Main():void {
          //一番はじめじゃないtrace使えない  
          MonsterDebugger.initialize(stage);
          MonsterDebugger.trace(this,"first"); 
 
          //初期化
          setStage();
          loadImage();                   
        }
        
        // ステージの設定    
         private function setStage():void {  
           stage.addEventListener( Event.RESIZE,  resizeListener);
           
           //NO_SCALEでないと、リサイズイベントが発生しない
           stage.scaleMode = StageScaleMode.NO_SCALE;
           stage.align     = StageAlign.TOP_LEFT;      
         }
          
          //イメージの読み込み
          private function loadImage():void {
            load_img.load(url_img,context);
            //読み込んだ後に実行される
            load_img.contentLoaderInfo.addEventListener( Event.COMPLETE , onComplete );    
          }
       
         private function onComplete( event:Event ):void {
                       MonsterDebugger.trace(this,"k"); 
           // イメージのサイズを指定
           var aData:Array  = new Array();
           aData = getResizeimg( load_img.width, load_img.height ); 
         
           load_img.width  = parseInt( aData[ 'width' ] );
           load_img.height = parseInt( aData[ 'height' ] );

           stage.addChild( load_img ); 
           
           //removeひつよう?
           //load_img.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); 
         }

         //縦横比の対応関数
         private function getResizeimg( width:int, height:int ):Array {
           var tWidth:int;
           var tHeight:int;
           var h:Number; 
           
           
           //比率の計算
           h = width/stage.stageWidth;         
           tHeight = height/h;
           
           //横に合わせる
           if(tHeight < stage.stageHeight){
               tWidth = stage.stageWidth;
               
           //縦に合わせる               
           }else{ 
               h = height/stage.stageHeight;
               tWidth = width/h;
               tHeight = stage.stageHeight;                 
           }

           aData[ 'width' ]  = String(tWidth);
           aData[ 'height' ] = String(tHeight);            

           return aData;
         }
         
          //ブラウザのリサイズが行われたときに実行される
          private function resizeListener( event:Event ):void {
               //リサイズ時になぜかaddchildが消えている
                  MonsterDebugger.trace(this,this.contains(load_img)); 
                  MonsterDebugger.trace(this,"test"); 
               
              if(flg == 0){ //初回
                  loadImage();
                  flg = 1; 
                  MonsterDebugger.trace(this,"second"); 
                  
              }else{ //初回以外
                  aData = getResizeimg( load_img.width, load_img.height ); 
                  MonsterDebugger.trace(this,this.contains(load_img)); 
                  load_img.width = aData[ 'width' ];
                  load_img.height = aData[ 'height' ];
             }         
          }
          

    }    
}