2013-08-20 30 views
0

有一個函數我使用,我創建應該得到bitmapdata並從對象的url發回它。我跟蹤調用函數的次數:d變量,它返回多少次,它當然應該是相等的,但它不是。從URL獲取bitmapdata太多未完成的處理程序 - Actionscript

這是我使用的功能。它檢查是否有一個對象的多個附件,然後加載位圖,並且如果附件的量等於所述量它應該有它發送位圖回功能的數組:

private function get_bitmap(url:String,urlObject:Object, on_complete:Function):void{ 
       d++; 

       //trace("get_bitmap"); 
       if(url == geenImage){ 
        trace("geenImage"); 
        loaderGeenImage.load(new URLRequest(geenImage)); 
       } 
       else{ 
        if(urlObject.length == 1){ 
         var url11:String = url +urlObject[0].id; 
         loader1.load(new URLRequest(url11)); 
         loader1int++; 

        } 
       if(urlObject.length == 2){ 
        loader2int++; 
         var url21:String = url +urlObject[0].id; 
         loader2.load(new URLRequest(url21)); 
         var url22:String = url +urlObject[1].id; 
         loader2.load(new URLRequest(url22)); 
        } 
       if(urlObject.length == 3){ 
         var url31:String = url +urlObject[0].id; 
         loader3.load(new URLRequest(url31)); 
         var url32:String = url +urlObject[1].id; 
         loader3.load(new URLRequest(url32)); 
         var url33:String = url +urlObject[2].id; 
         loader3.load(new URLRequest(url33)); 
        } 
       if(urlObject.length == 4){ 
         var url41:String = url +urlObject[0].id; 
         loader4.load(new URLRequest(url41)); 
         var url42:String = url +urlObject[1].id; 
         loader4.load(new URLRequest(url42)); 
         var url43:String = url +urlObject[2].id; 
         loader4.load(new URLRequest(url43)); 
         var url44:String = url +urlObject[3].id; 
         loader4.load(new URLRequest(url44)); 
        } 
       if(urlObject.length == 5){ 
         var url51:String = url +urlObject[0].id; 
         loader5.load(new URLRequest(url51)); 
         var url52:String = url +urlObject[1].id; 
         loader5.load(new URLRequest(url52)); 
         var url53:String = url +urlObject[2].id; 
         loader5.load(new URLRequest(url53)); 
         var url54:String = url +urlObject[3].id; 
         loader5.load(new URLRequest(url54)); 
         var url55:String = url +urlObject[4].id; 
         loader5.load(new URLRequest(url55)); 
        } 
       if(urlObject.length == 6){ 
         var url61:String = url +urlObject[0].id; 
         loader6.load(new URLRequest(url61)); 
         var url62:String = url +urlObject[1].id; 
         loader6.load(new URLRequest(url62)); 
         var url63:String = url +urlObject[2].id; 
         loader6.load(new URLRequest(url63)); 
         var url64:String = url +urlObject[3].id; 
         loader6.load(new URLRequest(url64)); 
         var url65:String = url +urlObject[4].id; 
         loader6.load(new URLRequest(url65)); 
         var url66:String = url +urlObject[5].id; 
         loader6.load(new URLRequest(url66)); 
        } 
       else{ 
         trace("anders" + urlObject.length); 
        } 

       } 



       loaderGeenImage.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{ 
         var bitmap:Bitmap = (e.target).content; 
         var data:BitmapData = bitmap.bitmapData; 
         geenImageArray.push(data); 
         if(geenImageArray.length == 1){ 
         on_complete(geenImageArray); 
         geenImageArray= []; 
         } 
        }); 
       loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{ 
        //var loader:URLLoader = URLLoader(e.target); 
        var bitmap:Bitmap = (e.target).content; 
        var data:BitmapData = bitmap.bitmapData; 
        //trace("bitmapcomplete"); 
        imageArray1.push(data); 
         if(imageArray1.length == 1){ 
          trace("imageArray1 gelijk"); 
          on_complete(imageArray1); 
          imageArray1= []; 
         } 

       }); 
       loader2.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{ 
        //var loader:URLLoader = URLLoader(e.target); 
        var bitmap:Bitmap = (e.target).content; 
        var data:BitmapData = bitmap.bitmapData; 
        //trace("bitmapcomplete"); 
        imageArray2.push(data); 
        //trace("url object lengte is " + urlObject.length); 

        if(imageArray2.length == 2){ 
         trace("imageArray2 gelijk"); 
         on_complete(imageArray2); 
         imageArray2= []; 

        } 

       }); 
       loader3.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{ 

        //var loader:URLLoader = URLLoader(e.target); 
        var bitmap:Bitmap = (e.target).content; 
        var data:BitmapData = bitmap.bitmapData; 
        //trace("bitmapcomplete"); 
        imageArray3.push(data); 
        //trace("url object lengte is " + urlObject.length); 

        if(imageArray3.length == 3){ 
         trace("imageArray3 gelijk"); 
         on_complete(imageArray3); 
         imageArray3= []; 

        } 

       }); 
       loader4.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{ 

        //var loader:URLLoader = URLLoader(e.target); 
        var bitmap:Bitmap = (e.target).content; 
        var data:BitmapData = bitmap.bitmapData; 
        //trace("bitmapcomplete"); 
        imageArray4.push(data); 
        //trace("url object lengte is " + urlObject.length); 

        if(imageArray4.length == 4){ 
         trace("imageArray4 gelijk"); 
         on_complete(imageArray4); 
         imageArray4= []; 

        } 

       }); 
       loader5.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{ 

        //var loader:URLLoader = URLLoader(e.target); 
        var bitmap:Bitmap = (e.target).content; 
        var data:BitmapData = bitmap.bitmapData; 
        //trace("bitmapcomplete"); 
        imageArray5.push(data); 
        //trace("url object lengte is " + urlObject.length); 

        if(imageArray5.length == 5){ 
         trace("imageArray5 gelijk"); 
         on_complete(imageArray5); 
         imageArray5= []; 

        } 

       }); 
       loader6.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{ 

        //var loader:URLLoader = URLLoader(e.target); 
        var bitmap:Bitmap = (e.target).content; 
        var data:BitmapData = bitmap.bitmapData; 
        //trace("bitmapcomplete"); 
        imageArray6.push(data); 
        //trace("url object lengte is " + urlObject.length); 

        if(imageArray6.length == 6){ 
         trace("imageArray6 gelijk"); 
         on_complete(imageArray6); 
         imageArray6= []; 

        } 

       }); 

      } 

這裏的功能調用它:

get_bitmap(bitmapString,imageObject, function(imageArray:Array):void { 
           intje++; 
           trace("getBitmap teruggestuurd "+intje + "waarvan 1 image " + loader1int+ "waarvan 2 images " +loader2int); 
           trace("getbitmap aangeroepen is "+d); 

,這裏是我的日誌:

lengte is 20 anders1 anders1 geenImage anders1 anders1 getBitmap teruggestuurd 1waarvan 1 image 4waarvan 2 images 0 getbitmap aangeroepen is 5 0 getBitmap teruggestuurd 2waarvan 1 image 4waarvan 2 images 0 getbitmap aangeroepen is 5 1 getBitmap teruggestuurd 3waarvan 1 image 4waarvan 2 images 0 getbitmap aangeroepen is 5 2 getBitmap teruggestuurd 4waarvan 1 image 4waarvan 2 images 0 getbitmap aangeroepen is 5 3 getBitmap teruggestuurd 5waarvan 1 image 4waarvan 2 images 0 getbitmap aangeroepen is 5 4 anders1 anders2 anders2 anders1 anders1 anders1 anders1 anders1 anders1 anders1 anders2 anders1 anders1 anders1 anders1 imageArray2 gelijk getBitmap teruggestuurd 6waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 5 imageArray2 gelijk getBitmap teruggestuurd 7waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 6 imageArray2 gelijk getBitmap teruggestuurd 8waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 7 imageArray2 gelijk getBitmap teruggestuurd 9waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 8 imageArray2 gelijk getBitmap teruggestuurd 10waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 9 imageArray2 gelijk getBitmap teruggestuurd 11waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 10 imageArray2 gelijk getBitmap teruggestuurd 12waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 11 imageArray2 gelijk getBitmap teruggestuurd 13waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 12 imageArray2 gelijk getBitmap teruggestuurd 14waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 13 imageArray2 gelijk getBitmap teruggestuurd 15waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 14 imageArray1 gelijk getBitmap teruggestuurd 16waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 15 imageArray1 gelijk getBitmap teruggestuurd 17waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 16 imageArray1 gelijk getBitmap teruggestuurd 18waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 17 imageArray1 gelijk getBitmap teruggestuurd 19waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 18 imageArray1 gelijk getBitmap teruggestuurd 20waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 19 gelijk dude imageArray1 gelijk getBitmap teruggestuurd 21waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 0 imageArray1 gelijk getBitmap teruggestuurd 22waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 1 imageArray1 gelijk getBitmap teruggestuurd 23waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 2 imageArray1 gelijk getBitmap teruggestuurd 24waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 3 imageArray1 gelijk getBitmap teruggestuurd 25waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 4 imageArray1 gelijk getBitmap teruggestuurd 26waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 5 imageArray1 gelijk getBitmap teruggestuurd 27waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 6 imageArray1 gelijk getBitmap teruggestuurd 28waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 7 imageArray1 gelijk getBitmap teruggestuurd 29waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 8 imageArray1 gelijk getBitmap teruggestuurd 30waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 9 imageArray1 gelijk getBitmap teruggestuurd 31waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 10 imageArray1 gelijk getBitmap teruggestuurd 32waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 11 imageArray1 gelijk getBitmap teruggestuurd 33waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 12 imageArray1 gelijk getBitmap teruggestuurd 34waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 13 imageArray1 gelijk getBitmap teruggestuurd 35waarvan 1 image 16waarvan 2 images 3 getbitmap aangeroepen is 20 14 

回答

0

裝載機的負載方法是異步的。 這意味着它需要一些時間來執行,並且代碼執行不會「等待」它。 (這就是爲什麼我們正在處理事件...)

所以,當你這樣做:

    var url21:String = url +urlObject[0].id; 
        loader2.load(new URLRequest(url21)); 
        var url22:String = url +urlObject[1].id; 
        loader2.load(new URLRequest(url22)); 

你開始loader2(url21)加載,然後立即開始一個新的裝載(url22),停止第一次加載,因此只獲得一個'COMPLETE'事件(對於url22)。

Ik hoop dat het help;)