2010-06-28 127 views
2

我想在兩個文件下載或成功上傳時分派自定義事件。我使用event.COMPLETE處理程序問題

fileRef.addEventListener(Event.COMPLETE, completeHandler); 
fileBigRef.addEventListener(Event.COMPLETE, completeHandler); 

只用1個處理程序來收聽整個事件。

function completeHandler(event:Event):void{ 
    var e:Event=new Event("addInfoDone"); 
    dispatchEvent(e); 
    fileBigRef.removeEventListener(Event.COMPLETE,completeHandler); 
    fileRef.removeEventListener(Event.COMPLETE,completeHandler); 
} 

我希望只在fileRef和fileBigRef都完整傳輸時調度一次事件。有任何想法嗎??我的大腦現在正在炒,無法想到任何.....感謝您的幫助。

回答

1

對於一個快速和骯髒的解決方案,如何定義一個計數器,每次遞增completeHandler被解僱。一旦計數器達到你期望的文件數量(聽起來像你期待2),您炒掉addInfoDone事件:

var fileRefCounter:Number = 0; 

function completeHandler(event:Event):void{ 
    fileRefCounter++; 
    if(fileRefCounter == 2) 
    { 
     // both files have downloaded; fire your custom event, or whatever 
    } 
} 
+0

Haha..Nice。也許這有點骯髒,但它得到的工作完成..:D謝謝.. – FlyingCat 2010-06-28 18:39:38

+0

我想知道是否有其他解決方案喜歡使用事件屬性或東西.... – FlyingCat 2010-06-28 18:40:22

+0

如果您正在使用URLLoader對象,你可以檢查'target'屬性來確定哪些對象觸發了事件。看看http://livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_and_communications_3.html – echo 2010-06-28 18:56:14