Делаю загрущик фото по типу в Контакте:\

Код AS3:
import flash.display.Bitmap;
import flash.display.Loader;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.events.MouseEvent;
import flash.events.Event;
import fl.events.ListEvent;
import fl.data.DataProvider;
// переменные
var frl:FileReferenceList = new FileReferenceList();
var currentFile:FileReference;
var dp:DataProvider = new DataProvider();
var currentFileNumber:uint;
var bitmap:Bitmap;
var totalAllowFiles:uint=50;
var idFile:uint=0;
// переменные
myTileList.setStyle("contentPadding", 5);
myTileList.setRendererStyle("imagePadding", 10);
myTileList.dataProvider = dp;
browseButt.addEventListener(MouseEvent.CLICK, browseFiles);
function browseFiles(event:MouseEvent):void {
currentFileNumber=1;
var imageTypes = new Array(new FileFilter("Изображения (*.jpg)", "*.jpg"));
frl.browse(imageTypes); // browse files
frl.addEventListener(Event.SELECT, onImageSelect);
}
function onImageSelect (event : Event):void { // при выборе картинок
getFile();
}
function getFile() : void { // получение каждого файла из frl
if(currentFileNumber<=frl.fileList.length && totalAllowFiles>0) {
currentFile = FileReference(frl.fileList[currentFileNumber-1]);
currentFile.load();
currentFile.addEventListener(Event.COMPLETE, onDataLoaded);
}
}
function onDataLoaded (event:Event):void { // при загрузке инфы из fr
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
loader.loadBytes(event.target.data);
}
function onImageLoaded(event:Event):void { // доавбление картинкиn в bitmap
var image:Bitmap = Bitmap(event.target.content);
event.target.removeEventListener(Event.COMPLETE, onImageLoaded);
var imageResize:Bitmap=resize(image, 150, 150);
trace('после ресайз' + idFile);
dp.addItem({source:imageResize, data:idFile}); // добавляем картинку в myTileList
if(totalAllowFiles>0) { // груим дальше картинки если они есть в FileReference
idFile++;
totalAllowFiles--;
currentFileNumber++;
getFile();
}
}
function resize(btm:Bitmap, width:Number, height:Number):Bitmap {
trace('до ресайз' + idFile);
var size:Number = 1;
var matrix:Matrix;
var image:BitmapData;
matrix = new Matrix();
if (btm.width > width || btm.height > height) {
size = Math.min(width / btm.width, height / btm.height);
matrix.scale(size, size);
}
btm.smoothing = true;
image = new BitmapData(btm.width * size, btm.height * size, true);
image.draw(btm, matrix, null, null, null, true);
return new Bitmap(image, PixelSnapping.AUTO, true);
}
в РАЗНЫХ СИТУАЦИЯ ( ПРИ БОЛЬШИХ ФОТО выдаёт таую ошибку:
ArgumentError: Error #2015: Недопустимые данные BitmapData.
at flash.display::BitmapData()
at upload2_fla::MainTimeline/resize()
at upload2_fla::MainTimeline/onImageLoaded()