Ответ основан на этой версии:https://stackoverflow.com/revisions/7466248/1
Из того, что я вижу в вашем коде, вы используете один и тот же экземпляр URLLoader
в каждой итерации цикла.
Вам потребуетсясоздайте новый экземпляр URLLoader
и добавьте его в свой массив roPool
, потому что в данный момент вы неоднократно выполняете одно и то же с одним и тем же URLLoader
.
public function init():void
{
for(var i:int = 0; i<RO_NUMBER; i++)
{
var ldr:URLLoader = new URLLoader();
ldr.dataFormat = URLLoaderDataFormat.TEXT;
ldr.addEventListener(Event.OPEN, onStartUpload);
ldr.addEventListener(Event.COMPLETE, completeHandler);
ldr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
ldr.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
ldr.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
roPool.push(ldr);
}
}
Newответ:
Попробуйте создать очередь и иметь только один экземпляр URLLoader за раз, грубый пример:
Класс:
package
{
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
public class LoadQueuer extends Object
{
// Queue
private var _queue:Array = [];
/**
* Standard load
* @param req Instance of URLRequest
*/
public function queue(loader:URLLoader, request:URLRequest):void
{
_queue.push({LOADER: loader, REQUEST: request});
_next();
}
/**
* Loads next loader in _queue
*/
private function _next():void
{
if(_queue.length > 0)
{
var info:Object = _queue.pop();
var loader:URLLoader = URLLoader(info.LOADER);
loader.load(
URLRequest(info.REQUEST)
);
loader.addEventListener(Event.COMPLETE, _complete);
}
}
/**
* ..
* Event.COMPLETE
*/
private function _complete(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
loader.removeEventListener(Event.COMPLETE, _complete);
trace(loader.data);
_next();
}
}
}
Пример использования:
var list:Array = [
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php",
"http://projectavian.com/test.php"
];
var lc:LoadQueuer = new LoadQueuer();
for each(var i:String in list)
{
lc.queue(
new URLLoader(),
new URLRequest(i)
);
}
Надеюсь, это поможет вам.