Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Загрузка картинок и ApplicationComplete (http://www.flasher.ru/forum/showthread.php?t=179773)

MaxD 21.05.2012 15:12

Загрузка картинок и ApplicationComplete
 
Здравствуйте!

Подскажите, пожалуйста, такую вещь.

Есть флекс-проект, в котором на сцене находится множество различных компонентов - вьюшек. Вьюшки грузят в себя различные картинки. Есть псевдо прелоадер, который должен висеть, пока все объекты на сцене не прогрузились. Как отследить, что все картинки загрузились и сцена готова? Все ивенты типа creationComplete, applicationComplete главной mxml выстреливают гораздо раньше.

Спасибо за ответы.

wvxvw 21.05.2012 20:30

А как вы их грузите?

MaxD 22.05.2012 11:35

обычным <s:Image/>

Astraport 22.05.2012 14:05

Попробуйте вешать creationComplete на каждую картинку. В нем плюсуйте переменную. Когда переменная станет равна кол-ву картинок - загрузились все:)

MaxD 22.05.2012 14:21

Ну, во-первых, когда картинок штук 80 - это очень долго, много лишнего кода, да и вообще не изящно.
Во-вторых, финальное количество картинок еще не известно, и при каждом добавлении картинки плюсовать максимальное значение - точно где-то провтыкаешь (еще и над проектом работает несколько человек).
И кстати, по-моему, creationComplete сработает просто когда компонент <s:Image/> создастся, а не прогрузится картинка.

DaFive 22.05.2012 14:58

Грузите лоадером, вешайте событие Event.COMPLETE. Как вы грузите картинки? У вас XML или что?

MaxD 22.05.2012 15:41

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

Astraport 22.05.2012 16:19

Цитата:

creationComplete сработает просто когда компонент <s:Image/> создастся, а не прогрузится картинка.
извиняюсь, не creationComplete, а просто complete.
Цитата:

Во-вторых, финальное количество картинок еще не известно, и при каждом добавлении картинки плюсовать максимальное значение - точно где-то провтыкаешь (еще и над проектом работает несколько человек).
Добавляйте картинки в Group например и считайте в ней кол-во элементов программно, чтобы не провтыкать.
Цитата:

Ну, во-первых, когда картинок штук 80 - это очень долго, много лишнего кода, да и вообще не изящно.
Не изящно, это возможно, для кого как. А если 7-8 строк - это много лишнего кода, то тогда предложенный вариант однозначно не подходит:)

wvxvw 22.05.2012 17:00

80 Image? Я бы застрелился (из водяного пистолета, других нету). Как оно вообще работает? Я не ожидал бы, если честно :)
Ну а по сути - нет, никаких автоматических возможностей отследить загрузку произвольного количества картинок нет в самих картинках или во фреймворке вообще, т.как это практически не возможно (кто знает, а может вы их каждую минуту новых десять штук добавляете?)
Я обычно не использую Image сразу по нескольким причинам - он не просто очень тяжелый, он монументально тяжелый, т.е. по сравнению с обычным спрайтом или битмапом он в несколько сот раз больше, он даже по сравнениюс UIComponent большущий. Но не смотря на размеры, кешировать картинки он не умеет. Так вот, я обычно создаю один загрузчик картинок, который занимается кешированием, и компоненты, которые заменяют Image - если есть возможность, то не использующие UIComponent, ну а если нет - то уж ничего не поделаешь. Эти компоненты сами ничего не загружают, а получают в свое распоряжение битмапдату картинки. Случайным образом имея контроль над загрузчиком можно было бы посчитать когда и сколько картинок уже загрузилось и как-то на это отреагировать, но практически такой необходимости у меня никогда не было.

MaxD 23.05.2012 11:05

Ок, спасибо за ответы, будем как-то извращаться (((


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

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