PDA

Просмотр полной версии : контроль загружаемого потока данных (сайт-портфолио фотографий)


Denis Davidov
03.09.2006, 08:55
Здрасвтуйте.
Помогите плиз разобраться со следующим вопросом.
Делаю сайт-портфолио фотографий. Фотографии выкладываю во фреймы. Имеются интерактивные эл-ы выбора разделов (портрет/фешн/арт) ( - переход на определенные фреймы). Как узнать и контролировать порядок загрузки данных из флеш?
Есть вариант в начале флеша сделать так:
if (_framesloaded < _totalframes) {
gotoAndPlay(_currentframe - 1);
}

Так сделано на www.kushelevich.com

тогда все сначала загрузится и потом можно легко просматривать сайт, но грузить по русскому и-нету 3-4 мега - это смерть
Я хочу попробовать разделить загрузку по разделам или вобще по фреймам и написать скрипт, что-бы пользователь не скучал эти 2-3 секунды.

Так сделано на www.missirkovbogdanov.com

Последнее должно быть проще т.к. наверно есть функции возвращающие кол-во байт, загр. из текущего фрейма и их общее число, а вот с первым даже не знаю как.

Помогите разобраться и посоветуюте плиз как это лучше сделать.
Спасибо за помощь.

Gaen
04.09.2006, 18:52
Как делается динамическая подгрузка:
Делается главная флэшка. Лёгкая.
Разделы выносятся в отдельные swf-файлы и подгружаются по мере необходимости при помощи loadMovie, которым я до сих пор пользуюсь, или при помощи movieClipLoader'a, использование которого сейчас рекомендуется. Фотки тоже можно подгружать. Хелп поможет тебе!

Denis Davidov
04.09.2006, 20:25
Как делается динамическая подгрузка:
Делается главная флэшка. Лёгкая.
Разделы выносятся в отдельные swf-файлы и подгружаются по мере необходимости при помощи loadMovie, которым я до сих пор пользуюсь, или при помощи movieClipLoader'a, использование которого сейчас рекомендуется. Фотки тоже можно подгружать. Хелп поможет тебе!

Спасибо за совет! я уж думал никто не ответит :)
а если подгружать каждую фотографию по отдельности ее нужно засовывать в MovieClip с одним фреймом и ложить в библиотеку или можно просто jpg оставить?
я так понимаю, что из библиотеки ничего дергаться не будет во время загрузки основной флешки? только при входе во фрейм я буду дергать из библиотеки картинки, так?
а во что выкидывать подргуженную картинку?
или ее через this.attachMovie с координатами подцеплять?

Не подскажешь, как узнать порядковый номер keyframe'а по имени и номер текущего фрейма? думаю организовать фотографии по порядковому номеру в разделе или может лучше по-дугому?

Я так понимаю что мне тогад вообще фреймы практически не нужны?
я просто подсовываю на развароты книги разные картинки из библиотеки, предварительно загружая, если нужно.

Спасибо за помощь!

Что такое хорошо?
04.09.2006, 20:41
а если подгружать каждую фотографию по отдельности ее нужно засовывать в MovieClip с одним фреймом и ложить в библиотеку или можно просто jpg оставить?...
В идеале лучше фотки вообще в библиотеку не помещать, а грузить из вне.
Тогда и сайт легче, и дальнейшее его обновление проще.


Я так понимаю что мне тогад вообще фреймы практически не нужны?
Не-е-е ))) Без фреймов никак неполучится. Хоть один, да все равно нужен будет.
В твоем случае смотри о MovieClipLoader и на форуме, в документации к флэшу или же вот тут покопайся http://www.blog.kuzen.ru/?page_id=32

Denis Davidov
04.09.2006, 20:53
Насчет фреймов понятно, что хоть один нужен.
Макет с парой фотографий без динамической подгрузки я сделал.

А во вне фотографии как хранить, просто под именами
fashion_1_left fashion_1_right (левая/правая сторона раздела fashion, первый разврот книги)?
и потом это имя составлять из какогонибудь countera и подгружать?
Как бы ты посоветовал?

Я просто хочу еще на Cd распростронять сайт и одну версию с картинками в библиотеке все равно надо сделать, что-б не своровали jpg (если они будут во вне лежать)

Denis Davidov
04.09.2006, 21:02
и еще, куда загружает swf эти, например, jpg?
я к тому, что КАк тогда проверить загружен ли объект с конкретным именем (или это будет symbol, а уже его экземпляр будет вытащен на показ)?

Denis Davidov
04.09.2006, 21:09
я вот подумал, что фишка еще в том, что не всегда есть левая и правая, иногода на весь разворот горизонтальная, или может еще как сверстать (например две панарамы). Можно хранить снаружы Shape'ы (свертасные развароты)?

Gaen
05.09.2006, 01:58
Во-первых, если твои картинки увидят, их всегда можно будет своровать принтскрином, тут уж ничего не поделаешь...

Куда грузит? Ну смотри:

//создаём контейнер
_root.createEmptyMovieClip("pic", _root.getNextHighestDepth());

//делаем мувик невидимым
pic._alpha=0;

//начинаем грузить
//photo.jpg находится в каталоге с флэшкой
pic.loadMovie("photo.jpg");

//простенький прелоадер
this.onEnterFrame=function(){
trace(pic.getBytesLoaded/pic.getBytesTotal*100+'%');
if(getBytesLoaded>=pic.getBytesTotal) delete this.onEnterFrame;
}//onEnterFrame

pic.onLoad=function(){
//загрузили - плавно показываем...
this.onEnterFrame=function(){
this._alpha+=10;
if(this._alpha>=255)delete this.onEnterFrame;
}//onEnterFrame
}//onLoad


Всё, _root.pic - твоя картинка!

Насчёт последнего поста не совсем понял. Имеешь в виду у тя фотки разного размера и располагаться должны по-разному? Тогда лучше завести XML-файлик, в котором будут содержаться все сведения о фотках (размеры, вес, название, описание итд). Будет полезно сходить на dembicki.narod.ru, там есть комментированный исходник xml-фотогаллереи.

Denis Davidov
05.09.2006, 07:56
Получается мне нужно либо для каждой фотки иметь свой контейнер, или всегда заново грузить фотографию в темповый контейнер.
Что будет если я загружу в этот MC еще одну фотографию?
ВОПРОС в том как их кешировать, что-бы одна и та-же картинка по 10 раз не дергалась, единажды загрузившись.
И как к ней обращаться и проверять загружена ли она?

Насчет xml там дейстиветльно фотографии разного размера ( например 640х480, 640х960, 200х960). Соответсвенно на развороте книжки я их верстаю по-разному (1:одна слева, одна српава, 2: одна на весь разворот).
В xml ты предлогаешь хранить все координаты и всю инфу о том каую фотку куда размещать, если ее тягает swf, да?

Что такое хорошо?
05.09.2006, 17:15
Что будет если я загружу в этот MC еще одну фотографию?
Старое содержимое МС будет замещено новым автоматически.

как их кешировать, что-бы одна и та-же картинка по 10 раз не дергалась, единажды загрузившись.И как к ней обращаться и проверять загружена ли она?

Кэшируется фотка автоматом. Находится в темпах и при повторном вызове грузится быстро. При желании такое удобство можно запретить. А проверять загружена ли она - тебе человек описал, но советую использовать для загрузок и проверок MovieClipLoader

Denis Davidov
05.09.2006, 21:36
Ок, понял, спасибо.

А насчет верстки /расположения фотографии?
можно ли подгружать объекты флеш (например в шейпах организовать фотографии).
Конечно можно свестать фотографии в jpeg на развороты, но тогда будет грузится лишняя инф-а (например белые поля и т.д.).
Спасибо.

Gaen
07.09.2006, 01:11
В смысле некоторые фотки овальные? Тут уж ничего не поделаешь, придётся грузить прямоугольник.

Для каждой фотки нужен свой контейнер, их обычно объединяют в массив

Denis Davidov
07.09.2006, 09:13
Тут немножко другое. Просто фотографии могут быть в разных форматах (соотношение сторон) (6:7, 3:4, 4:3, 1:1). Я хочу создать по количеству страниц (не разворотов) в книге контейнеры для страници (MovieClip например). В них вставить контейнер для фотографии разположив его в дизайнере в нужном месте на странице, в зависимости от фотографии, кот. в него буду грузить через MovieClipLoader. Ну а потом если исползовать эффекты переворота страницы буду погружать в нужные места контейнеры страниц и их фотографии со всякими прелодерами и анимацией.

В чем пока не разобрался дак это в следующем:
1. почему при изменении координат вложенного мувика (картинки) у наружного координаты тоже меняются? неужели для этого в "крестик" нужно помещять пустой объект (например прямоугольник белого цвета), что-бы контейнер-страница не менял свои координаты и я мог выгружать их всегда в одни и те-же координаты.
Плохо, что в дезайнере нельзя посомтреть все св-ва компоненты и установить их экземпляру в нужное значение (у MC есть ._focusrect, ._lockroot, но что они делают я еще на знаю). Наверно одно из них и решит описанную выше проблемму, но даже если так, я же не могу устонавливать эти св-ва в скрипте и а до этого дизайнить вслепую.

2. если у меня есть куча страниц. Я нажимаю кнопку next и по счетчику знаю что надо загрузить страницу(Мувик) art_10_L, и art_10_R из библиотеки, как сделать это составное имя и подгрузить? врятли можно
написать _root.art_ +10+"_"+"R". Можно ли сделать массив, но при этом каждый объект сдизайнить по своему (расположение контейнера для фотки)?

Denis Davidov
08.09.2006, 00:23
с этими вещами я вроде разобрался (1. вставить "тупой" и ненужный объект 2. eval ).
Но тут наткнулся на след. проблемму:
прописл класс PageContainer extends MovieClip в отдельном .as фаиле.
В основной флешке создал пустой мувик page_container, ассоциировал его с классом PageContainer:
Object.registerClass("page_container", PageContainer);
Думал создавать его экзепляры в дизайнере и добавлять в них мувики (один или два) и распологать их в нужном месте и вставлять ссылки на добавленые мувики в класс (там предусмотрены поля массивы), их число и URL к картинкам под мувики.
А Потом уже пользоваться функциями loadMovie не думая с каким именно экземпляром работаю.
Оказалось, что почему-то я не могу добавить в экзепляр мувик и расположить его, мувик(для картинки) добавляется в сам класс.
Если я меняю его распложение в одном месте, то он меняется везде.
Как сделать, что-бы был прописаный руками класс PageContainer и в тоже время его экзепляры можно-было править в дизайнере, засовывать в них разное число мувиков-контейнеров для разных картинок?