![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2009
Сообщений: 49
|
Добрый день
Как сделать что бы , загружались картинки (через xml) и загружались в массив, так будто бы они находятся в буффере(Library) ?? Подробнее: Так сделано,когда подгружает из библиотеке по Linkage: после парсинга xml, я получаю массив image[i] trace : j: 0 , im: src/1.JPG j: 1 , im: src/2.JPG j: 2 , im: src/3.JPG j: 3 , im: src/4.JPG j: 4 , im: src/5.JPG j: 5 , im: src/6.JPG j: 6 , im: src/7.JPG ![]() |
|
|||||
|
Модрон-ветеринар
|
Я делал так - сразу после загрузки отрисовывал мувик с картинкой в BitmapData и добавлял новый полученный экземпляр BitmapData в массив. Исходный загрузочный мувик-контейнер тут же удалялся. При необходимости аттачил картинки из массива. Так реально можно хранить растровые данные в памяти и их использовать.
Последний раз редактировалось mooncar; 15.10.2009 в 20:36. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 49
|
Спасибо за подсказку попробуем реализовать это)
Добавлено через 24 минуты Вопрос как добавить ? function bit() { var linkageId:String = "pic.jpg"; var myBitmapData:BitmapData = BitmapData.loadBitmap(linkageId); trace(myBitmapData instanceof BitmapData); // true var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); mc.attachBitmap(myBitmapData, this.getNextHighestDepth()); } Xml , дает нам лишь массив путей. , как загрузить в экземпляр BitmapData? Последний раз редактировалось sy555; 15.10.2009 в 21:50. |
|
|||||
|
Модрон-ветеринар
|
Вот кусок кода.
В проекте есть лента событий. Функция загружает картинку к определенному событию за определенный год. Данный кусок кода работает в этом проекте в составе общего прелоадера для всего ролика (проект большой). Привожу как есть. var EVENTSBITMAP:Array = new Array(); //массив фото событий ...... var mcLoaderEventsFoto:MovieClipLoader = new MovieClipLoader(); var listenerEFoto:Object = new Object(); mcLoaderEventsFoto.addListener(listenerEFoto); function loadEventsSlide (year, n) { this.createEmptyMovieClip('eventFoto' + year + n, this.getNextHighestDepth()); this['eventFoto' + year + n]._alpha = 0; //чтобы в прелоадере на виду не мелькали загружаемые картинки listenerEFoto.onLoadInit = function (target_mc:MovieClip) { var myImg:BitmapData = new BitmapData(target_mc._width, target_mc._height, false); myImg.draw(target_mc); target_mc.unloadMovie(); EVENTSBITMAP[target_mc._name] = myImg; if (year >= yearsTotal) { loadEventsStatus = 1; //состояние этого триггера проверяется механизмом общего лоадера } }; listenerEFoto.onLoadError = function (target_mc:MovieClip) {//если нет фото к событию if (year >= yearsTotal) { loadEventsStatus = 1; //конец } }; mcLoaderEventsFoto.loadClip(EventsPath + 'foto/' + year + '.' + n + '.jpg' + suffix, this['eventFoto' + year + n]); }; n - это номер события у конкретного года. EventsPath - путь на сервере к директории с данными шкалы событий suffix - зависит от способа загрузки - важен для отладки - в начале определяется: если загрузка с web-сервера, то suffix - рандомная приставка для предотвращения кэширования, если локально - то suffix = пусто. Функция вызывается из другой по определенному алгоритму загрузки общих данных шкалы событий. В нужный момент, когда юзер проходит по ленте событий года, из массива картинки приаттачиваются в мувик-контейнер: mc - это объектная ссылка для некого контейнера для иллюстрации... Последний раз редактировалось mooncar; 15.10.2009 в 22:59. |
|
|||||
|
Модрон-ветеринар
|
Совершенно верно, в нужный момент в нужной функции аттачим картинку а контейнер.
Только у меня были не номерные элементы массива, а именованные. Такой алгоритм в том же проекте работает еще в паре мест для загрузки других наборов изображений. Ресурсоемко, конечно в битмапу загонять, но заказчик очень хотел - сперва чтобы загрузилось все-все-все, потом работала презентация. Если проект не очень большой, то так можно. Тем более у меня это не для инета было, а для инфомата в вестибюле. Последний раз редактировалось mooncar; 15.10.2009 в 22:38. |
|
|||||
|
Модрон-ветеринар
|
Как там пишут - Enjoy it!
![]() |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 49
|
Не совсем я понял как это работает, если можно подсобить..
добавил своих комментов,где ошибся? import flash.display.BitmapData; var EVENTSBITMAP:Array = new Array(); //массив фото событий //...... var mcLoaderEventsFoto:MovieClipLoader = new MovieClipLoader(); var listenerEFoto:Object = new Object(); mcLoaderEventsFoto.addListener(listenerEFoto); loadEventsSlide(1999,5); function loadEventsSlide (year, n) { //создание пустого мувиклипа this.createEmptyMovieClip('eventFoto' + year + n, this.getNextHighestDepth()); this['eventFoto' + year + n]._alpha = 100; //чтобы в прелоадере не мелькали загружаемые картинки //когда объект загружен ,создаем функции с входным аргументом - муви,клип listenerEFoto.onLoadInit = function (target_mc:MovieClip) { //создаем объект типа BitmapData, под подгружаемый mc var myImg:BitmapData = new BitmapData(target_mc._width, target_mc._height, false); //отборжение эффекта myImg.draw(target_mc); //выгрузка мувиклипа из контейнера //target_mc.unloadMovie(); //Массив муикльипа ,с имееными индексами заполнеяеться конкретной картикой EVENTSBITMAP[target_mc._name] = myImg; if (year >= yearsTotal) { loadEventsStatus = 1; //состояние этого триггера проверяется механизмом общего лоадера } }; listenerEFoto.onLoadError = function (target_mc:MovieClip) {//если нет фото к событию if (year >= yearsTotal) { trace("ERROR, can't find file"); loadEventsStatus = 1; //конец } }; trace("ROUTE!::"+EventsPath + "foto/" + year + "." + n + ".jpg" + suffix ); mcLoaderEventsFoto.loadClip("fon.JPG", 1); //p1.loadClip("fon.JPG",1); }; p1.attachBitmap(EVENTSBITMAP[target_mc._name], this.getNextHighestDepth()); for(j=0;j<4;j++) { trace(" " + EVENTSBITMAP[j]); } что делает listenerEFoto.onLoadInit? и правильно ли я понял, что это массив EVENTSBITMAP будет выглядеть так EVENTSBITMAP=["ссылка на fon.jpg , загруженный динамически в библиотеку"] |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:37. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| xml , буферизация , массивы , парсинг |
|
|