2010-06-28 102 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