| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > ActionScript 1,2 > кеширование и loadMovie |
| Автор: Ramirez 26.2.2007, 19:01 | ||
| Добрый день! Не могу понять принцип кеширования. Вот в цикле выполняю следующий код:
т.е. несколько раз подгружаю одну и туже внешнюю картинку. Мне казалось, что после первой загрузки флеш должен был засунуть ее в кеш и след. раз брать уже оттуда, но практика показывает что он загружает ее каждый раз заново. Я что-то не правильно делаю, или надо реализовывать такой кеш самостоятельно? |
| Автор: Ramirez 21.3.2007, 01:42 |
| И всетаки мне не совсем понятно. Я смотрю при отладке в bandwidth profiler и он я вно показывает, что при каждом вызове loadMovie он загружает мувик заново. Как всетаки работает алгоритм кеширования, если он есть? И есть-ли разница что подгружается, клип или картинка? |
| Автор: AntonioBanderaz 21.3.2007, 08:14 |
| да для браузера никакой разницы... ты ведь когда заходишь на сайт, на который ты заходишь каждый день, у тя картинки заного не грузятся в сессию, так? тут таже фигня, но не всегда, браузерные настроки везде разные... если ты хочешь сднлать свой механизм кеширования, это можно, но только на AS3 |
| Автор: Ramirez 21.3.2007, 11:48 |
| Тоесть, ты хочешь сказать, что flash player загружает данные средствами браузера? Никогда бы не подумал. Хотя вполне вероятно... Жаль в манах об этом ни слова... А насчет своего механизма кеширования, мне кажется, что кеширование в памяти можно сделать и на AS2. Создать массив MovieClip и обертку для loader'a. Чтобы при вызове лоадера, он сначала смотрел запрошеный клип в массиве и если там нет, то загружал клип и копию в массиве сохранял... Или это не очень хорошая идея? |
| Автор: AntonioBanderaz 21.3.2007, 13:19 |
| ну просто ты duplicate не сделаешь, от загруженного MC |
| Автор: AlDev 21.3.2007, 14:22 |
AntonioBanderaz, да ну нафиг. BitmapData зачем нужна? |
| Автор: AntonioBanderaz 21.3.2007, 14:49 |
| ну дык, этож просто статика... |
| Автор: szz 22.3.2007, 07:37 | ||||
Мы ведь обсуждали это... не получится... БитмапДата не сохранить интерактивный свф.
А че удивляться, плеер то в браузере и бежит ))) Единственный способ заставить кэшировать - это отправлять хедеры от сервера. Я например все что иднт на лоадМуви - сфвки, картинки - пропускаю через php скрипт, т.е. обращение выглядит так: http://server.com/getforloadmovie.php?content=swfs/movie.swf По идее передача с параметром наоборот заставляет браузер насторожиться и не кешировать. Но если отдать перед выводом в php хедеры управлением кэша, то все начинает работать отлично, во всяком случае управляемо. У меня например вот такой вот getforloadmovie.php:
|
| Автор: Ramirez 22.3.2007, 14:34 |
| szz, интересная идея. спасибо! |
| Автор: anderw 19.2.2011, 13:38 | ||
не согласен. можно, например, сделать кэширование и средствами actionscript локально правда в зависимости от условия это решение может оказать непростым. но решение к приведенному примеру теоретически в as2 могло бы быть следующим: нужно организовать свой загрузчик, он должен создавать новый MovieClip, выставлять для него координаты, далее "подтаскивать" в него изображение, изображение больше не нужно - тушить, понадобилось - показывать его снова, можно даже дублировать, если понадобилось второе все что нужно это находить загруженное ранее изображение и соотв.объект сам набрел сюда в поиске подобного решения... или я не прав и все не так? |
| Автор: AlDev 19.2.2011, 16:35 | ||
| Ну вы и некромант. Проблема решается тупее некуда:
то есть добавляем к запросу timestamp и радуемся |
| Автор: anderw 19.2.2011, 18:20 |
| здорово! ) а если речь идет о as2, а Класс URLLoader это ActionScript 3.0 ? |
| Автор: SoWa 19.2.2011, 20:16 |
| Я чего-то не понимаю? А почему нельзя сперва эту картинку подгрузить, куданить сложить, а потом уже создавать динамически Мувиклипы и в них её засовывать? Добавлено через 43 секунды Ой ой, некропостинг. Добавлено через 1 минуту и 19 секунд Ладно, пусть будет. |
| Автор: anderw 19.2.2011, 20:38 |
| SoWa, а что значит "динамически подгрузить и куда-нибудь сложить", извините ) как раз подобное я предложил, разве нет? мои условия: 1. программирование на as2, и больше ничего нет, 2. сервер сконфигурировать не удастся, почему --военная тайна причем это реальная задача |
| Автор: SoWa 19.2.2011, 22:44 | ||
| Нее, динамически подгрузить - это ты придумал ) Я предложил подгрузить и запихивать в динамически создаваемые Мувиклипы:
Вот, извини, это я понимаю под динамическим созданием. Ведь у нас во все мувиклипы нужно одну и ту же картинку пихать, разве нет? Тогда почему бы её не вынести за цикл, скажем вот так: var image:Bitmap = Bitmap(loader.content); - это естессно в обработчике завершения загрузки лоадера. Теперь картинка загружена однажды и лежит себе тихо мирно. Потом при создании мувиклипа остается вызвать mc.beginBitmapFill, и все... Или я что-то неработоспособное сейчас предложил? Добавлено через 1 минуту и 30 секунд http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html#includeExamplesSummary |
| Автор: anderw 19.2.2011, 22:55 |
| да, есть сомнения Вы уверены, что это будет работать в actionscript 2.0 ?? |
| Автор: SoWa 20.2.2011, 09:44 |
| Уверен. Ибо beginBitmapFill там есть, и лоадеры там тоже есть. Добавлено через 20 секунд Но проверять мне откровенно лень |
| Автор: anderw 20.2.2011, 13:47 |
| ok спасибо, Дружище все так и есть Добавлено через 2 минуты и 54 секунды ну, а если вот еще и player 6.0 тогда как? ) |
| Автор: SoWa 20.2.2011, 19:29 |
Ого, извини, я не предполагаю, что у кого-то он еще есть(хотя всякое возможно) Поэтому предпочитаю не работать на такую малую перспективу |