|
|
|||||
Регистрация: May 2008
Сообщений: 14
|
Прерывания функций
Здравствуйте. Есть необходимость в прерыватели тех или иных действий (в частности загрузки).
Есть несколько MovieClip при клике на которых (onRelease) происходит обращение к xml, где хранятся адреса изображений, с последующей их погрузкой с одну и туже область(в качестве неё используется набор уже существующих MovieClip). При клике на разные MovieClip подгружаются разные виды изображений. Количество подгружаемых изображений при каждом клике около 1000. И если часто и быстро кликать по MovieClip, не дожидаясь завершения прежней загрузки, ролик начинает тормозить и загружать изображения с опозданиями. Примерный код: xmlImage = new XML(); xmlImage.ignoreWhite = true; xmlImage.load("xmlImageAddress.xml"); xmlImageList = new XML(); xmlImage.onLoad = function() { xmlImageList = xmlImage.firstChild.childNodes; for (count=0; count < xmlImageList.length; count++){ _root[‘mc’ + count].number = count _root[‘mc’ + count].onRelease = function(){ for (secondCount=0; secondCount <1000; secondCount ++) { _root[‘mcImage’+ secondCount].loadMovie(xmlImageList[this.number].childNodes[secondCount].firstChild);} } }; }; }; xmlImageAddress.xml – файл с адресами изображений; mc – MovieClip'ы, при клике на которые происходят события загрузки; count – счетчик с максимальным значением, равным количеству видов изображений; secondCount – счётчик используемый при загрузке 1000 изображений того или иного вида; number – переменная в которой хранится порядковый номер вида изображения; mcImage – MovieClip’ы , заранее существующие, в которые подгружаются изображения того или иного вида. Необходимо, чтоб при каждом событии onRelease предыдущая загрузка и обращения к xml прерывались и запускалось новая. Заранее благодарен. |
|
|||||
Регистрация: May 2008
Сообщений: 476
|
Есть у меня смутные мысли, что тут нужно использовать исключения, т.е. такие вещи как throw и класс Error. Хотя я могу ошибаться.
|
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Класс XML, единственный класс, загрузку у которого прервать нельзя, load (null) не помогает и файлы грузятся до конца.
Можно конечно подписывать onLoad через Delegate, а потом писать и начинать новую загрузку. НО у IE и FF одновременно может грузиться только два потока, а как я сказал выше загрузку XML прервать нельзя, поэтому сколько бы вы не отписывались, до тех пор пока предыдущие xml не загрузятся, новые грузится не будет. К примеру нажмем 20 раз, запустим 20 загрузок, но грязятся только первые два. Как только один из них загрузился, пошел 3, потом 4 и тд. Но если первые грузились долго, то к 20-ой может быть таймаут и соединение будет разорвано и в результате, самую последнию и актуальную загрузку вы не получите. Кто-то тут делал ход конем и грузил через javascript, так как js нормально загрузку xml убивает, а потом вроде из кеша брал. Но эта схема весьма сложная, и я бы не сказал, что надежная. Но иначе только блокировать кнопку загрузки на время самой загрузки. Последний раз редактировалось iNils; 25.05.2008 в 14:49. |
|
|||||
Регистрация: May 2008
Сообщений: 14
|
Спасибо за подробное описания. Не мог ли бы вы подсказать, как должна выгледить функция, которая служила бы своебразным прелоудером и чтоб цикл
не заканчивался ранее, чем загрузится последнее изображения. AS выполняется вроде асинхроно и если не поставить такого прелоудера на этот цикл, изображения будут грузится одно за другим, а события прописаные после цикла - например, разблокирование всех кнопок загрузки после окончаниязагрузки изображений - будут выполнятся внезависимости от того, они загрузились или нет. Заранее благодарен. И ещё раз спасибо за описание. |
|
|||||
ветеран форума
|
Вместо loadMovie, который давно устарел, используйте MovieClipLoader. Там есть обработчики onProgress и onLoadInit, куда и можно прописать отображение прелоадера с % и реактивацию кнопок соответственно. Пример нормальный есть во флешовом хелпе, да и на форуме много раз обсуждалось, можно найти
__________________
4am is time to rock |
|
|||||
Регистрация: May 2008
Сообщений: 14
|
Цитата:
пишите или скидывайте ссылки. Заранее благодарен и ещё раз спасибо за ориентир. |
Часовой пояс GMT +4, время: 07:15. |
|
« Предыдущая тема | Следующая тема » |
Теги |
break , loadmovie , onload , загрузка , прерывание |
|
|