In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

4

画像が削除されたり、リロード時のエラーに対してのエラー処理をおこなう。
Get Adobe Flash player
by megane_bomb1 09 May 2011
    Embed
/**
 * 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/xajY
 */

// 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;    
    // timer
    import flash.utils.Timer;
    import flash.utils.setInterval;
    
       

    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 ); 
            //errorのイベント 
            load_img.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);      
          }
       
         private function onComplete( event:Event ):void {
           // イメージのサイズを指定
           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)); 
               
              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' ];
             }         
          }
          //error
          private var tf:TextField = new TextField();    
          private function errorHandler(event:ErrorEvent):void {

            var format:TextFormat = new TextFormat(); 
            //format.color = 0xFF0000; 
            format.font = "Verdana"; 
            format.size = 40; 
            format.align = TextFormatAlign.CENTER;
            tf.defaultTextFormat = format;
            
            tf.width = stage.stageWidth;
            tf.y = -100;
            tf.text = "load error!";
            stage.addChild(tf);
            
            tf.addEventListener(Event.ENTER_FRAME,move);           
          }
          
        //アルファプログラム関数
        private function move(event:Event):void{
            tf.y += 3;
            if(tf.y == 200){
               tf.removeEventListener(Event.ENTER_FRAME,move);
               tf.addEventListener(Event.ENTER_FRAME,imgAlpha);   
            }
        }  
        
        private function imgAlpha(event:Event):void{
            tf.alpha -= 0.02;
            if(tf.alpha == 1){
               tf.removeEventListener(Event.ENTER_FRAME,imgAlpha);
            }
 
        }

    }    



}