Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.06.2013, 01:15
Makkssimka вне форума Посмотреть профиль Отправить личное сообщение для Makkssimka Найти все сообщения от Makkssimka
  № 11  
Ответить с цитированием
Makkssimka

Регистрация: Apr 2013
Сообщений: 18
По чему в этом коде, при выборе нескольких изображений, сохраняется только одно:
Код AS3:
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);
					}

Старый 01.06.2013, 01:29
WisP вне форума Посмотреть профиль Отправить личное сообщение для WisP Найти все сообщения от WisP
  № 12  
Ответить с цитированием
WisP

Регистрация: Sep 2003
Сообщений: 28
Потому что ваш цикл (полагаю, что "}" потерялась перед объявлением первой функции) обрабатывается до того как происходит событие COMPLETE. И когда выполняется onLoaderComplete то цикл уже завершен. Следовательно будет сохранено первое изображение с именем imgList[1].name, а потом оно будет перезаписано вторым изображение с тем же именем.

Добавлено через 9 минут
Код AS3:
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);
}

Старый 01.06.2013, 01:39
Makkssimka вне форума Посмотреть профиль Отправить личное сообщение для Makkssimka Найти все сообщения от Makkssimka
  № 13  
Ответить с цитированием
Makkssimka

Регистрация: Apr 2013
Сообщений: 18
И как это исправить?

Добавлено через 29 минут
WisP, таким образом проблема не решилась!

Добавлено через 38 часов 25 минут
Поменял код на следующий:
Код AS1/AS2:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.