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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.02.2013, 16:48
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 1  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
По умолчанию почему loadBytes не работает в flash 11.5 ?

Есть вот такой код:

Код AS3:
function loaders(ind)
	{
		//var path:String = arrList[ind].photo;
		result_tf.appendText("arrList["+ind+"].photo: " + arrList[ind].photo+"\r\n");
			loader.load( new URLRequest(arrList[ind].photo) );					
			//loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handler_bytesComplete);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
 
	}
 
function complete(e:Event):void
{	loader.loadBytes(loader.contentLoaderInfo.bytes);
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handler_bytesComplete);
	loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, complete);
	trace("loadBytes загружен");
 
}
 
 
function handler_bytesComplete(event:Event):void
{	result_tf.appendText("handler_bytesComplete\r\n");
	//result_tf.appendText(loader.contentLoaderInfo.content + "\r\n");
	var source:DisplayObject = loader.contentLoaderInfo.content as DisplayObject;
	result_tf.appendText("2\r\n");
	var bitmapData:BitmapData = new BitmapData(source.width, source.height, true, 0x00000000);
	result_tf.appendText("3\r\n");
	var bitmap:Bitmap = new Bitmap(bitmapData); 
	result_tf.appendText("4\r\n");
		bitmapData.draw(source);
		result_tf.appendText("5\r\n");
		stage.addChild( bitmap );
		result_tf.appendText("6\r\n");
		bitmap.x = bitmap.width * ind;
		loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, handler_bytesComplete);
 
 
		//if(ind < 5){ind++; loaders(ind);}
 
}
loaders(0);

Локально и вконтакте код работает во flash 10.3

Но вот вконтакте с flash 11.5 перестает работать.

Мне нужен мульти загрузчик фоток из контакта. Пытаюсь получить фото и записать его в bitmap. Что бы не плодить кучу обработчиков загрузки.

Подскажите, что я делаю не так? Что случилось с loadBytes? Event.COMPLETE для loadBytes не срабатывает.

Старый 07.02.2013, 17:30
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
А ведь есть уже давно придуманные велосипеды. Посмотрите BulkLoader - он вам все загрузит, + парсит xml, json, etc...

Добавлено через 3 минуты
а так должны быть вкурсе что с выходом 11.4 плеера поапдейтили безопасность.
Код AS3:
loader.load( new URLRequest(arrList[ind].photo,new LoaderContext(true));
Добавлено через 5 минут
так же врятли у вас получиться достучаться до БайтАрея картинки
Код AS3:
package src {
 
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.events.Event;
	import flash.utils.ByteArray;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.net.URLRequest;
	import flash.display.Sprite;
	import flash.events.SecurityErrorEvent;
	import flash.events.IOErrorEvent;
	import flash.system.LoaderContext;
 
	public class loadPictures extends Sprite {
 
		public var bitmap:Bitmap;
		private var aurl:String = "";
 
		public function loadPictures($url):void {
			loading($url);
		}
 
		private function loading($url):void {
 
			bitmap = new Bitmap();
 
			var req:URLRequest = new URLRequest($url);
			var _picLoader:Loader = new Loader();
				_picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,loader2ByteArray);
				_picLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
				_picLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
				_picLoader.load(req, new LoaderContext(true));
		}
 
		private function securityErrorHandler(e:SecurityErrorEvent):void {
			trace("security error");
			loading(aurl);
		}
 
		private function errorHandler(info:IOErrorEvent):void {
			loading(aurl);
 
		}
 
		private function loader2ByteArray(evt:Event):void {
			evt.target.content.smoothing = true;
			addChild(evt.target.content);
 
			dispatchEvent(new Event("LOAD_COMPLETE"));
 
	/* Не получиться 
			var lInfo:LoaderInfo = LoaderInfo(evt.target);
			var ba:ByteArray = lInfo.bytes;
 
			reloadByteArray(ba);*/
		}
 
		private function reloadByteArray(ba:ByteArray):void {
 
			var reloader:Loader = new Loader();
				reloader.loadBytes(ba);
 
				reloader.contentLoaderInfo.addEventListener(Event.COMPLETE, reloaderComplete);
		}
 
		private function reloaderComplete(evt:Event):void {
 
			var imageInfo:LoaderInfo = LoaderInfo(evt.target);
 
			var bmd:BitmapData = new BitmapData(imageInfo.width,imageInfo.height);
 
				bmd.draw(imageInfo.loader);
 
			bitmap = new Bitmap(bmd);
			bitmap.smoothing = true;
			addChild(bitmap);
 
			dispatchEvent(new Event("LOAD_COMPLETE"));
		}
	}
}
Код AS3:
addChild(new loadPictures(url_pic));
__________________
return this...


Последний раз редактировалось AlexCooper; 07.02.2013 в 17:43.
Старый 07.02.2013, 23:39
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 3  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
о, спасибо большое, надо будет применить

Старый 11.02.2013, 08:16
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 4  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
BulkLoader так же не решает вопрос с загрузкой фото вконтакте. Локально все работает.

Подскажите решение какое нибудь с загрузчиком.

Старый 11.02.2013, 08:33
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 5  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
NoCD вконтакте для загрузок с помощью любых лоадеров (URLLoader и прочие) нужен файл политики безопасности cross-domain.xml. Дело тут не в версии плеера, а в нарушении изолированной среды. Решение - создать корректный cross-domain.xml и кормить его плееру с помощью
Код AS3:
Security.loadPolicyFile(...);

Старый 11.02.2013, 11:57
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 6  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Цитата:
Сообщение от KumoKairo Посмотреть сообщение
NoCD вконтакте для загрузок с помощью любых лоадеров (URLLoader и прочие) нужен файл политики безопасности cross-domain.xml. Дело тут не в версии плеера, а в нарушении изолированной среды. Решение - создать корректный cross-domain.xml и кормить его плееру с помощью
Код AS3:
Security.loadPolicyFile(...);
Хорошо, а где мне этот файл хранить? У себя на сервере?

Если бы дело было только в нем, тогда и я бы не видел фоток, которые тянутся с контакта

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

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
То есть фото скачиваются и смотрятся?

Файл можно хранить на полиси сервере и отправлять строкой обратно по реквесту, а можно отдельным файлом. Вторым способом не пробовал, консультировать могу только по первому)

Старый 11.02.2013, 14:12
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 8  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
мне их не качать надо.
Суть в следующем:

1. через getProfile получаю информацию о пользователе, в том числе и ссылку на фото пользователя.
2. Через BulkLoader подсовываю ссылку на фото.
3. У меня как у разработчика и еще у пару людей отображаются фотки, а у других нет.

Даже одну пытаюсь отобразить, напрямую подставляя ссылку, не работает у некоторых людей.

4.

Старый 11.02.2013, 14:26
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 9  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
По опыту, фотки из контакта можно грузить двумя способами:
1. Использовать html текст внутри флешевского TextField
2. Использовать загрузчики, которые грузят фотку во флешку, и потом работают с ней как с полноценным Bitmap

C BulkLoader не работал, но могу предположить, что там используется второй способ, то есть обычный URLLoader с URLRequest'ом

Но если у вас грузятся одни фотки и не грузятся другие, значит проблема, скорее всего, в АПИ запросе вк. Скорее всего, для корректного завершения АПИ запроса вк, у участника должно быть установлено приложение.
Так же стоит отметить, что для некоторых АПИ запросов, приложение должно быть включено.

Старый 11.02.2013, 14:42
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 10  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
1. приложение включено
2. Не обязательно устанавливать приложение, что бы получить доступ к фоткам, достаточно разрешения пользователя.
3. Друзья, открывшие мое приложение, видят фотки друзей, следовательно, запрос проходит правильно.
Другие друзья не могут увидеть, но запрос все равно проходит, потому что я реально вижу массив ответа.

4. Если я использую loader.load( new URLRequest('ссылка' ); без loadBytes, то фотка начинает грузиться у всех, следовательно не проходят байты.

Помогите пожалуйста решить хотя бы вот такой вопрос:

Мне надо загрузить n-е количество фоток. Ну пусть будут минимум 5. Если я буду использовать один "loader", то фотка отобразится только на последней загрузке?
Как сделать так, что бы загруженные фотки не пропадали, не затирались?

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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