![]() |
Прерывания функций
Здравствуйте. Есть необходимость в прерыватели тех или иных действий (в частности загрузки).
Есть несколько MovieClip при клике на которых (onRelease) происходит обращение к xml, где хранятся адреса изображений, с последующей их погрузкой с одну и туже область(в качестве неё используется набор уже существующих MovieClip). При клике на разные MovieClip подгружаются разные виды изображений. Количество подгружаемых изображений при каждом клике около 1000. И если часто и быстро кликать по MovieClip, не дожидаясь завершения прежней загрузки, ролик начинает тормозить и загружать изображения с опозданиями. Примерный код: Код:
xmlImage = new XML();xmlImageAddress.xml – файл с адресами изображений; mc – MovieClip'ы, при клике на которые происходят события загрузки; count – счетчик с максимальным значением, равным количеству видов изображений; secondCount – счётчик используемый при загрузке 1000 изображений того или иного вида; number – переменная в которой хранится порядковый номер вида изображения; mcImage – MovieClip’ы , заранее существующие, в которые подгружаются изображения того или иного вида. Необходимо, чтоб при каждом событии onRelease предыдущая загрузка и обращения к xml прерывались и запускалось новая. Заранее благодарен. |
Есть у меня смутные мысли, что тут нужно использовать исключения, т.е. такие вещи как throw и класс Error. Хотя я могу ошибаться.
|
Класс XML, единственный класс, загрузку у которого прервать нельзя, load (null) не помогает и файлы грузятся до конца.
Можно конечно подписывать onLoad через Delegate, а потом писать Код:
xml.onLoad = null;К примеру нажмем 20 раз, запустим 20 загрузок, но грязятся только первые два. Как только один из них загрузился, пошел 3, потом 4 и тд. Но если первые грузились долго, то к 20-ой может быть таймаут и соединение будет разорвано и в результате, самую последнию и актуальную загрузку вы не получите. Кто-то тут делал ход конем и грузил через javascript, так как js нормально загрузку xml убивает, а потом вроде из кеша брал. Но эта схема весьма сложная, и я бы не сказал, что надежная. Но иначе только блокировать кнопку загрузки на время самой загрузки. |
Спасибо за подробное описания. Не мог ли бы вы подсказать, как должна выгледить функция, которая служила бы своебразным прелоудером и чтоб цикл
Код:
for (secondCount=0; secondCount <1000; secondCount ++) { |
Вместо loadMovie, который давно устарел, используйте MovieClipLoader. Там есть обработчики onProgress и onLoadInit, куда и можно прописать отображение прелоадера с % и реактивацию кнопок соответственно. Пример нормальный есть во флешовом хелпе, да и на форуме много раз обсуждалось, можно найти
|
Цитата:
Код:
for (secondCount=0; secondCount <1000; secondCount ++) { |
| Часовой пояс GMT +4, время: 22:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.