![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2013
Сообщений: 18
|
По чему в этом коде, при выборе нескольких изображений, сохраняется только одно:
for (var i:int = 0; i < imgList.length; i++) { var image:ByteArray = imgList[i].img; var imageName:String = imgList[i].name; //Ресайз фото var loadIm:Loader; loadIm = new Loader(); loadIm.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete); loadIm.loadBytes(image); function onLoaderComplete(event:Event):void{ var newImg:BitmapData = new BitmapData(200, 200); var img:ByteArray; var vas:Bitmap = loadIm.content as Bitmap; newImg.draw(vas); img = new JPEGEncoder(90).encode(newImg); upl(img); //Если сделать trace(img) то выводится два изображения } //конец function upl(imag:ByteArray):void{ // Значит где-то здесь ошибка var loader:MultipartURLLoader = new MultipartURLLoader; loader.addVariable('imgName', imageName); loader.addFile(imag, imageName, 'imgData', 'image/jpeg'); loader.load('http://upload.ro/up/bin-debug/upload.php'); loader.addEventListener(Event.COMPLETE, onCompletes); } |
|
|||||
|
Регистрация: Sep 2003
Сообщений: 28
|
Потому что ваш цикл (полагаю, что "}" потерялась перед объявлением первой функции) обрабатывается до того как происходит событие COMPLETE. И когда выполняется onLoaderComplete то цикл уже завершен. Следовательно будет сохранено первое изображение с именем imgList[1].name, а потом оно будет перезаписано вторым изображение с тем же именем.
Добавлено через 9 минут var nameQuant:int; for (var i:int = 0; i < imgList.length; i++) { var image:ByteArray = imgList[i].img; var loadIm:Loader; loadIm = new Loader(); loadIm.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete); loadIm.loadBytes(image); } function onLoaderComplete(event:Event):void { var newImg:BitmapData = new BitmapData(200, 200); var img:ByteArray; var vas:Bitmap = loadIm.content as Bitmap; newImg.draw(vas); img = new JPEGEncoder(90).encode(newImg); nameQuant++; upl(img, "image_"+nameQuant); } function upl(imag:ByteArray, imgName:String):void { var loader:MultipartURLLoader = new MultipartURLLoader; loader.addVariable('imgName', imgName); loader.addFile(imag, imgName, 'imgData', 'image/jpeg'); loader.load('http://upload.ro/up/bin-debug/upload.php'); loader.addEventListener(Event.COMPLETE, onCompletes); } |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 18
|
И как это исправить?
![]() Добавлено через 29 минут WisP, таким образом проблема не решилась! Добавлено через 38 часов 25 минут Поменял код на следующий: public var loadIm:Loader = new Loader(); public var imageName:String; public function uploadImg(event:MouseEvent):void{ for (var i:int = 0; i < imgList.length; i++) { var image:ByteArray = imgList[i].img; imageName = imgList[i].name; loadIm.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete); loadIm.loadBytes(image); } } public function onLoaderComplete(e:Event):void{ trace (vas); // Выдает только один объект Bitmap var vas:Bitmap = loadIm.content as Bitmap; var origBit:BitmapData = vas.bitmapData; var soot:Number; var scaleH:Number; var scaleW:Number; var scaleY:Number; var scaleX:Number if (origBit.height > origBit.width) { soot = origBit.height/origBit.width; scaleH = 1080/origBit.height; scaleW = (1080/soot)/origBit.width; scaleY = Number(scaleH.toFixed(3)); scaleX = Number(scaleW.toFixed(3)); } else { soot = origBit.width/origBit.height; scaleW = 1920/origBit.width; scaleH = (1920/soot)/origBit.height; scaleY = Number(scaleH.toFixed(3)); scaleX = Number(scaleW.toFixed(3)); } var newH:int = origBit.height*scaleH; var newW:int = origBit.width*scaleW; var scaleBit:BitmapData = new BitmapData(newW, newH, origBit.transparent); var scaleMatrix:Matrix = new Matrix(); scaleMatrix.scale(scaleX, scaleY); scaleBit.draw(origBit, scaleMatrix); var img:ByteArray; img = new JPEGEncoder(90).encode(scaleBit); upl(img); } public function upl(imag:ByteArray):void{ var loader:MultipartURLLoader = new MultipartURLLoader; loader.addVariable('imgName', imageName); loader.addFile(imag, imageName, 'imgData', 'image/jpeg'); loader.load('http://upload.ro/up/bin-debug/upload.php'); loader.addEventListener(Event.COMPLETE, onCompletes); } public function onCompletes (event: Event):void { } 1. Все та же, сохраняется только последнее изображение из нескольких выбранных 2. При загрузке горизонтальных фото, по видимому во время их ресайза, опера подвисает(нет ответа) на несколько секунд, как это исправить? Последний раз редактировалось Makkssimka; 02.06.2013 в 16:09. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|