Форум 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=109410)

aaum 13.03.2008 22:41

Прелоад многих-многих-многих картинок.
 
Flash совершенно занял на целый день мою не приспособленную для программирования голову. Дело в том, что причудилась мне очередная галерея; в крайней рассеянности я ходил по дому, иногда отхлёбывая ром из большой тёмной бутыли, — от этого мысли мои становились неторопливыми и ароматными. Наконец, окутанный сизым дымом датского табака, я написал:

Код:

// А сформирую галерею из папки media/...
GALLERI = function () {
        _root.createEmptyMovieClip("forBildere", this.getNextHighestDepth());
        for (var a:Number = 1; a<=N; a++) {
                forBildere.createEmptyMovieClip("forBildere _inn"+a, a);
                var SS = forBildere["forBildere_inn"+a];
                SS.num = a;
                SS.attachMovie("ramme", "ramme", 1);
                // А отнумерую я фотографии
                SS.createTextField("nummerere", 200, x1, y1, 25, 20);
                SS.nummerere.setNewTextFormat(iCSS);
                SS.nummerere.selectable = false;
                SS.nummerere.text = a;
                // А добавлю копирайты на каждое фото
                SS.createTextField("kopirettighet", 201, x2, y2, 100, 20);
                SS.kopirettighet.setNewTextFormat(iCSS);
                SS.kopirettighet.selectable = false;
                SS.kopirettighet.text = "© åum 2008";
                // Тили-тили…
                SS.createEmptyMovieClip("ladder"+a, a++);
                // Стыдоба, конечно. Трали-вали…
                if (a<10) {
                        din = "0";
                } else {
                        din = "";
                }
                // Это мы не проходили…
                SS["ladder"+a].loadMovie("media/"+din+a+".jpg", ["ladder"+a]);
                // Это нам не задавали…
                SS._x = coordX+(SS._width +grense)*a;
                SS._y = coordY;
        }
};

Спешу пояснить. Я хотел сделать линейную горизонтальную галерею с количеством ячеек N, состоящем из одинаковых по размеру изображений. Управление к нему вкусное сделать — в стиле iTunes. Я имею в виду управление, а не сам стиль.

Данные из xml: N — это количество изображений, grense — интервал м-у изображениями, coordX, coordY... Ну еще другие параметры, которых тут, похоже, нет :)

Так вот, вопрос, который я не смог пока [красиво] одолеть: как наиболее грамотно сделать по прелоадеру в каждой ячейке (то есть, в каждой ячейке показывать и контролировать статус загрузки)? И насколько плох вышенаписанный и тегом обрамлённый код?

Takk!

Неплохо я досуг провожу, всё ж гляжу и думаю :-)

iNils 13.03.2008 22:53

1. Вместо loadMovie, надо использовать класс MovieClipLoader. Как он работает, объяснять не будут, так как есть примеры в хелпе, + множество примеров галерей с исходниками на данном форуме.
2. Вместо
Код:

forBildere.createEmptyMovieClip("forBildere _inn"+a, a);
var SS = forBildere["forBildere_inn"+a];

надо писать
Код:

var ss:MovieClip = forBildere.createEmptyMovieClip("forBildere _inn"+a, a);
Заметьте, ss, а не SS. С большой буквы пишут только имена классов.

aaum 14.03.2008 02:08

iNils: Спасибо! Кстати, я видел Ваш ответ на аналогичную просьбу.

У меня всегда были проблемы с вложениями, уровнями... Если взять за основу код из вышеуказанного поста, то в моем случае это будет не так?

Код:

                var mcl:MovieClipLoader = new MovieClipLoader();
                mcl.addListener(this);
                this.onLoadInit = function() {
                        var mc:MovieClip = ss.createEmptyMovieClip("mc"+a, a+1);
                        mcl.loadClip("Media/"+din+a+".jpg", mc);
                };

Прошу прощения за мою любительщину.

iNils 14.03.2008 02:22

За пример лучше взять этот пост или этот, как примеры последовательных загрузок.
Осталось только добавить onLoadProgress для анимации прелоадера.

А в вашем коде не ясно значение "а" и нет запуска следующей загрзуки по окончанию предыдущей.

aaum 14.03.2008 06:10

iNils:
Можно, я покажу вам исходник? Не могу разбораться в чём-то элементарном.

iNils 14.03.2008 06:14

Кто же запрещает :)

aaum 14.03.2008 06:20

aaum.ru/fortemp/to_iNils.zip

Извините, но в загрузчике и его компонентах полный беспорядок :( Просто, если можно, укажите на ошибку.

iNils 14.03.2008 06:35

Эээ, а собственно, что надо сделать?:)))

А пока нашел две ошибки:
1. iLeft.onPress описан внутри iRight.onPress
2. Версия плеера для публикации стоит 6, а надо 8

aaum 14.03.2008 06:42

Спасибо! У меня фотографии грузятся не в ячейки, а в _root. А нужно, чтобы в каждом ss["cont"+a]. Там можно увидеть, что было мной задумано, если освободить 57 и 64 строчки, а this.onLoadInit(); вырубить. Вот в этом проблема — повесить на каждый контейнер ss["cont"+a] по прелоадёру. Я не смог.

iNils 14.03.2008 07:25

Хм, ss - это ["forBildere _inn" + a], так зачем внутри объекта с переменной, еще один объект с переменной ["cont"+a], то есть ["forBildere _inn" + a]["cont"+a]?


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

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