![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
if (imagesLoaded < IMAGES_PER_PAGE)
А почему не в цикле for ? |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Цитата:
Добавлено через 25 минут Цитата:
Может выложить весь мой код целиком? (он небольшой) Просто в первом посте я упростил код. Добавлено через 4 часа 56 минут http://www.flasher.ru/forum/showthread.php?t=136030 Использовал идею с Цитата:
obj.msg = 'test message'; obj.addEventListener(MouseEvent.CLICK,test_msg); function test_msg(e:Event){ trace(e.target.msg); } package { import flash.display.Loader; public class Myloader extends Loader { public var server:String; public function Myloader() { super(); } } } //в основном коде var myloader:Myloader = new Myloader(); myloader.server = 'server1'; myloader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadAva); myloader.load(new URLRequest(image_url)); // функция onLoadAva //из-за этой строчки не работает. если её закомментировать, то картинки показывает. tf.text=e.target.server; Добавлено через 5 часов 34 минуты Продолжаю не спать и бороться с проблемой. Сделал как сказано тут http://www.flasher.ru/forum/showpost...09&postcount=3 Цитата:
function onLoadAva(e:Event, s:String) : void { tmp_mc.image_url = s; tmp_mc.addEventListener(MouseEvent.CLICK, function (e:Event):void { e.target.x+=50; tf.text = tmp_mc.image_url; }); } //Поиск фотографий service.addEventListener(FlickrResultEvent.PHOTOS_SEARCH, onPhotosSearch); service.photos.search("", "linux", "any", "", null, null, null, null, 0, "", 3, 1, "date-posted-desc"); function onPhotosSearch(e:FlickrResultEvent):void { for (var i:Number = 0; i <= e.data.photos.photos.length-1; i++) { var server:String = e.data.photos.photos[i].server; var id:String = e.data.photos.photos[i].id; var secret:String = e.data.photos.photos[i].secret; var image_url:String = "http://static.flickr.com/"+server+"/"+id+"_"+secret+"_s.jpg"; tf.text += server + ", "; var loader:Loader = new Loader(); //loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadAva); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event):void{onLoadAva(e, server)} ); loader.load(new URLRequest(image_url)); }; } Да, при клике по картинке, в текстовом поле отображается значение переменной s. Но это отображаемое значение одно и то же, а оно должно быть разным. Ведь в функции onPhotosSearch переменная server принимает разные значения. И вызов function (e:Event):void{onLoadAva(e, server)} тут ведь тоже каждый вызов значение переменной server разное. Но в текстовом поле одно и то же. tf.text += server + ", "; в текстовом поле появилось testsdfwefwef4116, 4119, 4120, Когда кликаешь по любой картинке, то в тектовом поле появляется строка 4120. А ведь должно как быть: кликаешь по первой картинке, в текстовом поле появляется строка 4116, кликашь по второй картинке, в тектовом поле появляется строка 4119, кликашь по третьей картинке, в тектовом поле появляется строка 4120. А сейчас кликаешь по первой, второй и третьей картинкам - всё равно появляется строка 4120. Кстати, у Вас может возникнуть вопрос: почему после 4116 сразу 4119, а не 4117? Всё нормально, это flickr такие адреса задаёт. Добавлено через 9 часов 41 минуту Закомментировал строку tf.text += server + ", "; в функции onPhotosSearch Добавил строку tf.text += s + ", "; в функцию onLoadAva(e:Event, s:String) В текстовом поле появилось testsdfwefwef4139, 4139, 4139, Получается, что в функцию onLoadAva каждый раз передаётся одно и то же число. Странно, ведь вызов onLoadAva производится с разным значением переменной server. Добавлено через 9 часов 41 минуту Я спать, всю ночь работал. Добавлено через 22 часа 24 минуты Проснулся. Заново посмотрел код, кажется я понял почему всё равно появляется строка 4120. В функции onPhotosSearch есть цикл, он итерируется быстро, а событие Event.COMPLETE происходит уже потом, после завершения цикла (ведь фотки грузятся не так быстро, как итерируется цикл). А после завершения цикла переменная server равна 4120 и поэтому функция onLoadAva(e, server) вызывается с одним и тем же значением переменной server. Я прав? Последний раз редактировалось zemozes; 13.07.2010 в 00:22. |
|
|||||
|
Modus ponens
|
Никогда не используйте анонимные функции в AS3. Только что же в соседнем разделе это обсуждалось...
А вообще, поищите в форуме "API приложений и сред", там наверняка есть варианты с flickr. Ну или в худшем случае, в сети таких должно быть масса, я бы начал с http://www.adobe.com/devnet/ там публиковались куча примеров пто фейсбуки, твиттер, и им подобные.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
wvxvw, спасибо, что отвечаете на мои вопросы. Хоть что-то становится понятно.
Да тут дело то в общем не с фликр, на его месте мог быть любой сайт. С фликр api у меня всё хорошо. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Я передаю параметры в обработчик с помощью Dictionary, у которого Loader.contentLoaderInfo/URLLoader - ключи.
public var dict:Dictionary = new Dictionary(true); public function load(url:String, callback:Function, param:*):void{ var loader:Loader loader= new Loader(); loader.load(new URLRequest(url)); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadImage, false, 0, true); dict[loader.contentLoaderInfo] = [callback, param]; } public function onLoadImage(e:event):void{ e.target.removeEventListener(Event.COMPLETE, onLoadImage); dict[e.target][0](e, dict[e.target][1]); } Кстати, с MyLoader вариант по идее не хуже, а может и чуть получше, но правильно не tf.text=e.target.server; а tf.text = (e.target.loader as MyLoader).server; т.к. e.target - это contentLoaderInfo. Ещё то, что вы не увидели ексепшен, кидаемый строкой tf.text=e.target.server; (оно совсем не просто так берёт и не работает) означает, что у вас не дебаговый плеер, рекомендуется вот поставить. PS: код выше не компилился, доработать напильником, если чо =) Последний раз редактировалось -De-; 13.07.2010 в 11:04. |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 99
|
Сделал как сказал wvxvw, помогло.
http://www.flasher.ru/forum/showpost...4&postcount=10 Проблему с передачей параметров решил просто: глобальный массив. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|