![]() |
|
||||||||||
|
|||||
|
Доброго времени суток!
Что не так? Загружаю из XML картинки, а грузится последняя из цикла... ![]() count_avatar = 3;
for (i = 0; i < count_avatar; i++){
createEmptyMovieClip("clip", 0);
file = menu_xml.firstChild.childNodes[0].childNodes[i].childNodes[1].childNodes[0];
clip.maxWidth = 330;
clip.maxHeight = 300;
clip._x = random(100);
clip._y = random(100);
clip["image"+i].removeMovieClip();
clip.createEmptyMovieClip("image"+i, 0);
clip["image"+i].loadMovie(file);
}
|
|
|||||
|
Модрон-ветеринар
|
Хотя бы потому что
- у вас в цикле постоянно на одном и том же 0-м уровне создается мувик clip, замещая уже созданный на предыдущем шаге. Разумеется, все предыдущие загрузки идут прахом, они не успевают произойти - контейнер для загрузки уже исчез. Возможно (без контекста не совсем все ясно, особенно с путями), так: count_avatar = 3; var loader:MovieClipLoader = new MovieClipLoader(); for (i = 0; i < count_avatar; i++) { clip = createEmptyMovieClip('clip' + i, i); file = menu_xml.firstChild.childNodes[0].childNodes[i].childNodes[1].childNodes[0]; clip._x = random(100); clip._y = random(100); img = clip.createEmptyMovieClip('image', 0); loader.loadClip(img, file); } Последний раз редактировалось mooncar; 23.06.2010 в 20:23. |
|
|||||
|
Сделал вот так все работает:
count_avatar = 3; for (i = 0; i < count_avatar; i++) { file = menu_xml.firstChild.childNodes[0].childNodes[i].childNodes[1].childNodes[0]; //-----------------Грузим картинки--------------- var mc:MovieClip = createEmptyMovieClip("image" + i, i); //-----------------Положение для картинок------ mc._x = i * 200; mc._y = i * 200; mc._xscale = 70; mc._yscale = 70; //Грузим мувики mc.loadMovie(file); //-------------Делаем кнопку------------ mc.onRelease = function() { trace("Нажатие"); }; } ![]() |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 950
|
читайте в хелпе про класс MovieClipLoader и его обработчики onLoadInit и onLoadComplete.
|
|
|||||
|
Модрон-ветеринар
|
Прелюдия.... В моем предыдущем посте были перепутаны местами параметры в методе oadClip. Надо:
А вот решение вам: var count_avatar:Number = 3; var loader:MovieClipLoader = new MovieClipLoader(); var listener:Object = new Object(); loader.addListener(listener); listener.onLoadInit = function (target_mc:MovieClip) { var cont:MovieClip = target_mc._parent; var i:Number = cont.num; //"вспоминаем" номер target_mc._x = i * 200; target_mc._y = i * 200; target_mc._xscale = 70; target_mc._yscale = 70; target_mc.onRelease = mcOnRelease; }; for (i = 0; i < count_avatar; i++) { file = menu_xml.firstChild.childNodes[0].childNodes[i].childNodes[1].childNodes[0]; //контейнер верхнего уровня var cont:MovieClip = this.createEmptyMovieClip('cont' + i, i); cont.num = i; //"запоминаем" номер в контейнере верхнего уровня //Создаем вложенный мувик-контейнер нижнего уровня, куда и будем грузить картинку. //Это нужно, поскольку после загрузки содержимое контейнера стирается, // а ведь нужно запомнить номер мувика. var img:MovieClip = cont.createEmptyMovieClip('img', 0); loader.loadClip(file, img); } function mcOnRelease () { var cont:MovieClip = this._parent; var i:Number = cont.num; //опять "вспоминаем" номер trace('Нажали на мувик номер ' + i ); } PS. Все должно заработать (единственное - я не моделировал ваш XML, пути к картинкам занес вручную). Последний раз редактировалось mooncar; 25.06.2010 в 20:12. |
|
|||||
|
Вот я сделал, как Вы писали выше, отдельно этот кусок с XML и картинками но все равно не работает...
![]() |
|
|||||
|
Модрон-ветеринар
|
Пересохраните для CS3.
|
|
|||||
|
Модрон-ветеринар
|
Собственно нашел пример, который я тогда сэмулировал для вашего случая. Только пути к картинкам просто генерируются: 1.jpg, 2.jpg и тд., а не берутся из xml-файла. Посмотрите, все в порядке, все работает.
Может быть у вас проблемы с разбором XML? Потрейсите... Последний раз редактировалось mooncar; 06.07.2010 в 15:09. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 18
|
Посоветуйте плиз, как лучше сделать? У меня похожая ситуация - гружу несколько картинок (их может быть от 10 до 1000). И потом мне нужно по 10 штук на странице их показывать. Т.е. два ряда по 5 картинок, в одном месте. Сразу все картинки для галереи не гружу, гружу только те что нужны для открытой страницы. А проблема вот в чём - сейчас я сделал 10 копий одного клипа (квадрат с рамочкой) куда и грузится картинка. Перелистывается страница - в те-же самые 10 квадратов грузятся новые 10 картинок. Листаешь назад - грузятся снова те что были ранее. Как-бы организовать загрузку так, чтобы не грузить картинки по нескольку раз а однажды загрузить их куда-то а потом просто копировать в тот мувик с рамкой? Что-то вроде библиотеки с attachMovie.
Подскажите хотя-бы в сторону чего копать? Нужно куда-то загружать картинки чтобы потом можно было их копировать(?) в рамки на места. Последний раз редактировалось Бармалейкин; 09.07.2010 в 01:59. |
|
|||||
|
Модрон-ветеринар
|
1) Можно оставить все как есть - то есть пусть они подгружаются всякий раз заново.
Дело в том, что если проект в сети лежит, то браузер после первой загрузки их закеширует. 2) Если все же хотите, то можно, загружая картинки, сразу отрисовывать их в битмапный массив, и добавлять по мере надобности в мувик с рамочкой с помощью attachBitmap. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|