Делаю загрузчик sprite sheets с сервера с помощью URLLoader и FileStream.
Почему-то иногда файлы сохраняются нулевого размера. Вроде ProgressEvent всегда показывает наличие байтов при загрузке с URLLoader, а на деле случаются нулевые файлы.
Подскажите, плиз, как правильно делать такую загрузку множества файлов?

Код AS3:
files = 21;// мое количество sprite sheets
filesArray = new Array();
for (var i:int = 0; i < files; i++)
{
filesArray.push(i+ 1+ '.png');
filesArray.push(i+ 1+ '.xml');
}
nextDownload();
private function nextDownload():void
{
if (count < filesArray.length){
downloadFile("http://mysite.com/assets/symbols/" + appScaleFactor + 'x/' + filesArray[count], "assets/symbols/" + filesArray[count]);
} else {
trace('finished');
}
}
private function downloadFile(url:String, fileName:String):void {
stream = new URLStream();
_fileName = fileName;
var request:URLRequest = new URLRequest(url);
stream.addEventListener(flash.events.Event.COMPLETE, completeHandler);
stream.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
stream.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
stream.addEventListener(ProgressEvent.PROGRESS, progressHandler);
stream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
try {
stream.load(request);
} catch (error:Error) {
trace("Unable to load requested URL.");
}
}
private function completeHandler(event:flash.events.Event):void {
var fileData:ByteArray = new ByteArray();
stream.readBytes(fileData,0,stream.bytesAvailable);
stream.removeEventListener(flash.events.Event.COMPLETE, completeHandler);
stream.removeEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
stream.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
stream.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
stream.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
stream =null;
var newFile:File = File.applicationStorageDirectory.resolvePath(_fileName);
var fs:FileStream = new FileStream();
fs.openAsync(newFile, FileMode.WRITE);
fs.writeBytes(fileData,0,fileData.length);
fs.close();
fs = null;
count++;
nextDownload();
}
private function progressHandler(event:ProgressEvent):void {
trace("progressHandler: " + event);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}