2011年9月8日木曜日

FLASHでGUIの4

HttpServer関連と、Loader関連をひとつのクラスにしようと思ったけど、
まぁ使い方を考えると、それぞれ別でもイイ気がしてきたので、別で。
基本はHttpServerと同じ。内部でLoaderクラスを呼ぶだけ。
Httpのときと同じように、ひとつずつ動作させる。
こんな感じで。
  1. // ------------------------------------------------------------------------------  
  2. function spLoadImage(){  
  3.   own = this;  
  4.   init();  
  5. }  
  6. // ------------------------------------------------------------------------------  
  7. public function ldInit(e:Event):void{  
  8.   trace(e);  
  9. }  
  10. // ------------------------------------------------------------------------------  
  11. public static function getEnum(n:int):String{  
  12.   switch(n){  
  13.     case eNotBitmap:    return  "Not Bitmap Resource";  
  14.     case eIOError:      return  "IO Error";  
  15.     case eSecurityError:  return  "Securit Error";  
  16.     default:        return  "Undifiend Error";  
  17.   }  
  18. }  
  19. // ------------------------------------------------------------------------------  
  20. private function ldComplete(e:Event):void{  
  21.   trace(e);  
  22.   if(loader.content is Bitmap){  
  23.     var lp:Object = loader.content;  //  var lp:Bitmapだとエラー  
  24.     var bit:Bitmap = new Bitmap(lp.bitmapData.clone());  
  25.     lp.bitmapData.dispose();  
  26.     okFunction(localVal,bit);  
  27.   }else{  
  28.     ngFunction(eNotBitmap,  getEnum(eNotBitmap));  
  29.   }  
  30.   nextGo();  
  31. }  
  32. // ------------------------------------------------------------------------------  
  33. private function ldIOError(e:IOErrorEvent):void{  
  34.   ngFunction(eIOError,e.text);  
  35.   nextGo();  
  36. }  
  37. // ------------------------------------------------------------------------------  
  38. private function nextGo():void{  
  39.   trace("--nextGo--");  
  40.   loader.contentLoaderInfo.removeEventListener(Event.INIT,        ldInit);  
  41.   loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,      ldComplete);  
  42.   loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,    ldIOError);  
  43.   bRun = false;  
  44.   execute();  
  45. }  
  46. // ------------------------------------------------------------------------------  
  47. private function init():void{  
  48.   uVar  = new URLVariables;  
  49.   datAr  = new Array;  
  50. }  
  51. // ------------------------------------------------------------------------------  
  52. public function setData(url:String,  comtype:uint,  okRes:Function,  ngRes:Function,  args:String,method:String="POST"):void{  
  53.   datAr.unshift(  
  54.     {  
  55.       "url":    url,  
  56.       "comtype":  comtype,  
  57.       "okFunc":  okRes,  
  58.       "ngFunc":  ngRes,  
  59.       "args":    args,  
  60.       "method":  method  
  61.     }  
  62.   );  
  63.   //  Array  //  pop()  最後を取り出して削除  //  unshift(... args):uint 最初に追加  
  64. }  
  65. // ------------------------------------------------------------------------------  
  66. public function execute():void{  
  67.   setTimeout(executeSub, tInterval);  
  68. }  
  69. // ------------------------------------------------------------------------------  
  70. private function executeSub():void{  
  71.   if(datAr.length < 1){  
  72.     //  END  
  73.   }else{  
  74.     if(bRun){  
  75.       setTimeout(executeSub, tInterval);  
  76.     }else{  
  77.       trace("☆executeSub "+datAr.length);  
  78.       bRun = true;  
  79.       var o:Object  = datAr.pop();  
  80.       loader = new Loader;  
  81.       loader.contentLoaderInfo.addEventListener(Event.INIT,        ldInit);  
  82.       loader.contentLoaderInfo.addEventListener(Event.COMPLETE,      ldComplete);  
  83.       loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,  ldIOError);  
  84.       var UR:URLRequest    = new URLRequest(o.url);  
  85.       if(o.method == "GET")  UR.method = URLRequestMethod.GET;  
  86.       else          UR.method = URLRequestMethod.POST;  
  87.       uVar = new URLVariables;  //  何か設定することになるだろう。  
  88.       uVar.args = o.args;  
  89.       UR.data=uVar;        //    
  90.       okFunction  = o.okFunc;  
  91.       ngFunction  = o.ngFunc;  
  92.       localVal  = o.comtype;  
  93.       try{  
  94.         loader.load(UR);  
  95.       }  
  96.       catch (error:SecurityError){  //  err:Error  
  97.         ngFunction(eSecurityError,getEnum(eSecurityError));  
  98.       }  
  99.     }  
  100.   }  
  101. }  
  102. // ------------------------------------------------------------------------------  

0 件のコメント:

コメントを投稿