Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос по loader и повторной загрузкой данных (http://www.flasher.ru/forum/showthread.php?t=134988)

Zuzzuk 13.01.2010 17:34

Вопрос по loader и повторной загрузкой данных
 
Здравствуйте.
Прошу совета, ситуация такая:
Есть код, в котором обрабатывается xml, далее создаются объекты с аттрибутами на основе этого xml, и при клике на каждый объект загружается ф-ция, которая получает в аргумент ссылку-параметр того стороннего элемента, который надо загрузить на сцену (jpg, bmp, swf)
Вот код функции
Код AS3:

public function preloadMovie(movie:String):void {
var loader:Loader = new Loader();
loader.load(new URLRequest(movieLeft));                               
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, moviePreloaderShow);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, setMovies);
 
loader.load(new URLRequest(movieLeft));
}

Как видно, в начале идет ф-ция которая показывает прелоадер, потом, после полной загрузки идет обработчий ф-ции который вставляет элемент на сцену.
И все бы ничего, но к сожалению, данный вариант не подошел заказчику, и попросили переделать так, что бы все элементы загружались сразу в начале, еще до клика по объекту, а при клике сразу показывались

Получить все ссылки на сторонние элементы в самом начале я могу.
И я думал, что можно в начале написать loader на один и тот же файл, и второй раз он его грузить не будет, но каждый раз новый loader загружает файлы по новой.
Может сделать еще один объект, в котором будут имена-ссылки на уже загруженные loader'ы с элементами, и при клике искать элемент типа MovieArray['some_pic.jpg'] и вставлять его на сцену....
Вот....в общем как сделать лучше?
Прошу прощенья за возможный бардак в тексте :)
Спасибо

leofit 13.01.2010 18:17

Я не знаю как лучше, но я бы сделал с Object`ом..
Обход дерева XML с подгрузкой элемента в object не такая сложная процедура, зато потом представвляет возможностей больше (например, отображение всех загруженных штук сразу, пролистывание и проч)

dmitriev 13.01.2010 21:52

Обходите XML, на каждую картинку создаёте по Loader'у, ставите всех на загрузку и засовываете в массив.

dimarik 14.01.2010 00:41

Цитата:

Сообщение от Zuzzuk (Сообщение 878748)
И я думал, что можно в начале написать loader на один и тот же файл, и второй раз он его грузить не будет, но каждый раз новый loader загружает файлы по новой.
Может сделать еще один объект, в котором будут имена-ссылки на уже загруженные loader'ы с элементами, и при клике искать элемент типа MovieArray['some_pic.jpg'] и вставлять его на сцену....
Вот....в общем как сделать лучше?
Прошу прощенья за возможный бардак в тексте :)
Спасибо

Немного размышлял на эту тему. Остановился на том, что необходимо сохранять в хеш таблицу, в которой значением является сигнатура ресурса, а ключом является url пучка ресурсов (resource bundle url). Тогда, вероятно, любой ресурс можно загрузить и уведомить запрошающего о его готовности, если он еще не загружен, либо сразу забрать из менеджера ресурсов, если ресурс загружен.

В такой схеме loader вторичен. Он используется только для доставки ресурсов до менеджера ресурсов. И как будет реализован loader: URLLoader, URLStream, Socket и пр., что позволяет итерактировать с датапровайдерами - все равно.

Zuzzuk 14.01.2010 13:54

Всем спасибо за ответы :)
Решил действительно делать объекты с ключом название и значенийем - loader'ом.
Теперь буду разбираться, как посчитать общий размер файлов, общий размер загруженных байт и как после этого включить основные обработчики :) но это я думаю разберусь.


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

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