2012-10-27 77 views
0

我在遊戲開始前加載遊戲的圖像。所以主函數將圖像鏈接發送到圖像加載對象。這是在我的圖像加載對象發生什麼事,當我在我的主要做image.load(鏈接):如何知道哪一個觸發了eventListener

public function charge(str:String, img_x:int, img_y:int, layer:Sprite):void 
    { 
     trace("load"); 
     urlRequest = new URLRequest(str); 

     loaderArray[cptDemande] = new Loader(); 
     loaderArray[cptDemande].contentLoaderInfo.addEventListener(Event.COMPLETE, loading_done); 
     loaderArray[cptDemande].load(urlRequest); 

     posX[cptDemande] = img_x; 
     posY[cptDemande] = img_y; 

     layerArray[cptDemande] = layer; 

     cptDemande++;   
    } 

參數img_x:INT,img_y:int和層:雪碧都與後來顯示圖像。我正在使用數組來在加載全部完成時將圖像添加到舞臺。

事件監聽器啓動此功能:

public function loading_done(evt:Event):void 
    { 
     cptLoaded++; 
     evt.currentTarget.contentLoaderInfo.removeEventListener(Event.COMPLETE, loading_done); 
     if((cptDemande == cptLoaded) && (isDone == true)) 
     { 
      afficher(); 
     } 
    } 

什麼,我想要的是能夠靶向良好裝載機刪除事件偵聽器。我現在使用(evt.currentTarget)不工作,並生成一個錯誤代碼:上flash.display.LoaderInfo在沒有找到

1069性能數據並沒有默認值

回答

1

跟蹤evt.currentTarget顯示currentTargetLoaderInfo屬性。嘗試更新的代碼如下:

public function loading_done(evt:Event):void 
{ 
    cptLoaded++; 

    // Current target IS the contentLoaderInfo 
    evt.currentTarget.removeEventListener(Event.COMPLETE, loading_done); 
    //evt.currentTarget.contentLoaderInfo.removeEventListener(Event.COMPLETE, loading_done); 
    if((cptDemande == cptLoaded) && (isDone == true)) 
    { 
     afficher(); 
    } 
} 

只是一個凌晨提示你,而我在這,你可以通過存儲在一個Object您的圖像的所有屬性,然後推動使生活爲自己輕鬆許多這些轉換爲單個Array,而不是爲每個屬性管理單獨的數組。

事情是這樣的:

private var loadedImages:Array = new Array();  

    public function charge(str:String, img_x:int, img_y:int, layer:Sprite):void 
    { 
     var urlRequest:URLRequest = new URLRequest(str); 

     var loader:Loader = new Loader(); 
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loading_done); 
     loader.load(urlRequest); 

     var imageData:Object = { }; 
     imageData.loader = loader; 
     imageData.posX = img_x; 
     imageData.posY = img_y; 
     imageData.layer = layer; 

     // Now we have a single Array with a separate element for 
     // each image representing all its properties 
     loadedImages.push(imageData); 

     cptDemande++;   
    } 
相關問題