|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
почему loadBytes не работает в flash 11.5 ?
Есть вот такой код:
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 не срабатывает. |
|
|||||
А ведь есть уже давно придуманные велосипеды. Посмотрите BulkLoader - он вам все загрузит, + парсит xml, json, etc...
Добавлено через 3 минуты а так должны быть вкурсе что с выходом 11.4 плеера поапдейтили безопасность. Добавлено через 5 минут так же врятли у вас получиться достучаться до БайтАрея картинки 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")); } } }
__________________
return this... Последний раз редактировалось AlexCooper; 07.02.2013 в 17:43. |
|
|||||
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
о, спасибо большое, надо будет применить
|
|
|||||
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
BulkLoader так же не решает вопрос с загрузкой фото вконтакте. Локально все работает.
Подскажите решение какое нибудь с загрузчиком. |
|
|||||
NoCD вконтакте для загрузок с помощью любых лоадеров (URLLoader и прочие) нужен файл политики безопасности cross-domain.xml. Дело тут не в версии плеера, а в нарушении изолированной среды. Решение - создать корректный cross-domain.xml и кормить его плееру с помощью
|
|
|||||
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
Цитата:
Если бы дело было только в нем, тогда и я бы не видел фоток, которые тянутся с контакта |
|
|||||
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
мне их не качать надо.
Суть в следующем: 1. через getProfile получаю информацию о пользователе, в том числе и ссылку на фото пользователя. 2. Через BulkLoader подсовываю ссылку на фото. 3. У меня как у разработчика и еще у пару людей отображаются фотки, а у других нет. Даже одну пытаюсь отобразить, напрямую подставляя ссылку, не работает у некоторых людей. 4. |
|
|||||
По опыту, фотки из контакта можно грузить двумя способами:
1. Использовать html текст внутри флешевского TextField 2. Использовать загрузчики, которые грузят фотку во флешку, и потом работают с ней как с полноценным Bitmap C BulkLoader не работал, но могу предположить, что там используется второй способ, то есть обычный URLLoader с URLRequest'ом Но если у вас грузятся одни фотки и не грузятся другие, значит проблема, скорее всего, в АПИ запросе вк. Скорее всего, для корректного завершения АПИ запроса вк, у участника должно быть установлено приложение. Так же стоит отметить, что для некоторых АПИ запросов, приложение должно быть включено. |
|
|||||
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
1. приложение включено
2. Не обязательно устанавливать приложение, что бы получить доступ к фоткам, достаточно разрешения пользователя. 3. Друзья, открывшие мое приложение, видят фотки друзей, следовательно, запрос проходит правильно. Другие друзья не могут увидеть, но запрос все равно проходит, потому что я реально вижу массив ответа. 4. Если я использую loader.load( new URLRequest('ссылка' ); без loadBytes, то фотка начинает грузиться у всех, следовательно не проходят байты. Помогите пожалуйста решить хотя бы вот такой вопрос: Мне надо загрузить n-е количество фоток. Ну пусть будут минимум 5. Если я буду использовать один "loader", то фотка отобразится только на последней загрузке? Как сделать так, что бы загруженные фотки не пропадали, не затирались? |
Часовой пояс GMT +4, время: 16:54. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|