Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Загрузка нескольких картинок? (http://www.flasher.ru/forum/showthread.php?t=141387)

forward 23.06.2010 19:51

Загрузка нескольких картинок?
 
Доброго времени суток!

Что не так? Загружаю из XML картинки, а грузится последняя из цикла...:eek:

Код:

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);

}


mooncar 23.06.2010 20:05

Хотя бы потому что
Код AS1/AS2:

createEmptyMovieClip("clip", 0);

- у вас в цикле постоянно на одном и том же 0-м уровне создается мувик clip, замещая уже созданный на предыдущем шаге.
Разумеется, все предыдущие загрузки идут прахом, они не успевают произойти - контейнер для загрузки уже исчез.

Возможно (без контекста не совсем все ясно, особенно с путями), так:
Код AS1/AS2:

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);
}


forward 25.06.2010 17:56

Сделал вот так все работает:

Код AS1/AS2:

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("Нажатие");
 
        };
}

Только вот не могу понять почему функция onRelease не работает? :(

lexa2000lexa 25.06.2010 18:12

читайте в хелпе про класс MovieClipLoader и его обработчики onLoadInit и onLoadComplete.

mooncar 25.06.2010 18:59

Прелюдия.... В моем предыдущем посте были перепутаны местами параметры в методе oadClip. Надо:
Код AS1/AS2:

loader.loadClip(file, img);

А вот решение вам:

Код AS1/AS2:

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 );
}

И забудьте совершенно про loadMovie, иначе так и будут вопросы - "почему то не работает, почему се не работает"

PS. Все должно заработать (единственное - я не моделировал ваш XML, пути к картинкам занес вручную).

forward 06.07.2010 14:46

Вложений: 1
Вот я сделал, как Вы писали выше, отдельно этот кусок с XML и картинками но все равно не работает...:eek:

mooncar 06.07.2010 14:53

Пересохраните для CS3.

mooncar 06.07.2010 15:06

Вложений: 1
Собственно нашел пример, который я тогда сэмулировал для вашего случая. Только пути к картинкам просто генерируются: 1.jpg, 2.jpg и тд., а не берутся из xml-файла. Посмотрите, все в порядке, все работает.
Может быть у вас проблемы с разбором XML? Потрейсите...

Бармалейкин 09.07.2010 00:17

Посоветуйте плиз, как лучше сделать? У меня похожая ситуация - гружу несколько картинок (их может быть от 10 до 1000). И потом мне нужно по 10 штук на странице их показывать. Т.е. два ряда по 5 картинок, в одном месте. Сразу все картинки для галереи не гружу, гружу только те что нужны для открытой страницы. А проблема вот в чём - сейчас я сделал 10 копий одного клипа (квадрат с рамочкой) куда и грузится картинка. Перелистывается страница - в те-же самые 10 квадратов грузятся новые 10 картинок. Листаешь назад - грузятся снова те что были ранее. Как-бы организовать загрузку так, чтобы не грузить картинки по нескольку раз а однажды загрузить их куда-то а потом просто копировать в тот мувик с рамкой? Что-то вроде библиотеки с attachMovie.

Подскажите хотя-бы в сторону чего копать?
Нужно куда-то загружать картинки чтобы потом можно было их копировать(?) в рамки на места.

mooncar 09.07.2010 10:18

1) Можно оставить все как есть - то есть пусть они подгружаются всякий раз заново.
Дело в том, что если проект в сети лежит, то браузер после первой загрузки их закеширует.
2) Если все же хотите, то можно, загружая картинки, сразу отрисовывать их в битмапный массив, и добавлять по мере надобности в мувик с рамочкой с помощью attachBitmap.


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

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