Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.09.2009, 18:35
Zhihar вне форума Посмотреть профиль Отправить личное сообщение для Zhihar Найти все сообщения от Zhihar
  № 1  
Ответить с цитированием
Zhihar

Регистрация: Sep 2002
Сообщений: 202
По умолчанию загрузка изображений с диска и хранение их в ролике

такой вопросик:

есть картинки, которые я загружаю с диска в клипы
отображаются картинки пачками
причем пользователь может просмотреть пачки по нескольку раз и в произвольном порядке

сейчас вчерновую реализовал так:
1) когда пользователь запросил очередную пачку, которая еще не была просмотрена - создаются MovieClip и в них загружаются картинки через MovieClipLoader

2) когда пользователь запросил очередную пачку, то что отображалось делается скрытым (_visible = false)

3) если пользователь запросил пачку с уже загруженными картинками - пачка делается видимой (_visible = true)

все это сделано для оптимизации удаленной загрузки ресурсов


НО!!! мне не нравится, что приходится делать MovieClip скрытыми
если бы у меня картинки были бы сразу в ролике, я бы использовал привязки (Linkage) и загружал бы в клипы только то, что необходимо

А можно ли подобный подход реализовать когда картинки на диске, а не вролике
Т.е. загружать картинки не в клип, который торчит на экране, а куда-нить в другое место, откуда можн было бы извлекать эти данные

Старый 01.09.2009, 18:37
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Я тоже так делаю. Что конкретно вас смущает в их нахождении с _visible = false на сцене?
Они не нагружают процессор.


Последний раз редактировалось mooncar; 01.09.2009 в 18:39.
Старый 01.09.2009, 19:24
Zhihar вне форума Посмотреть профиль Отправить личное сообщение для Zhihar Найти все сообщения от Zhihar
  № 3  
Ответить с цитированием
Zhihar

Регистрация: Sep 2002
Сообщений: 202
ну как-то не кошерно как мне кажется
т.е. как мне кажется не место неиспользуемым клипам в основном окне

Старый 01.09.2009, 20:38
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Совсем забыл, я недавно делал иначе!
Вот вам решение, оно как раз для этого случая: битмап-массив может быть "другое место, откуда можн было бы извлекать эти данные".
Приведу тут куски моего кода..

После загрузки через MovieClipLoader:
Грузите во временный контейнер, у вас после этого он остается на сцене для просмотра (у меня удалялся). И отрисовываете его в массив битмап-данных.
Код AS1/AS2:
 _root.bitmaps = new Array(); //массив, где постоянно хранятся битмапные слайды
И для лоадера:
Код AS1/AS2:
listener.onLoadInit = function(target_mc:MovieClip) {
	this["bitmap" + f] = new BitmapData(target_mc._width, target_mc._height, false);	
	this["bitmap" + f].draw (target_mc); //отрисовываем битмапу из загруженного контейнера с картинкой
	target_mc.unloadMovie(); 
	_root.bitmaps[f] = this["bitmap" + f]; //вот тут мы сохраняем полученную битмапу в массив
	f++;
	nextLoad(); //тут я переходил к следующему слайду		
}
Тут есть куски которые вне контекста кода непонятными будут, но уловите принцип...

Когда данный контейнер не нужен, спокойно (удаляете) ремуваете контейнер или контейнеры. Поскольку я удалял сразу (показ был отложен) , у меня был так сразу в теле onLoadInit:
Код AS1/AS2:
target_mc.unloadMovie();
Когда опять нужен, уже не _visible = true, а либо аттачите, либо создаете контейнер (я предпочитаю аттачить - ), и отрисовываете в него битмапу из нужного элемента массива.
Этот кусок я не приведу (быстро не найду, другое место).

Добавлено через 7 минут
Так, думаю, кошерно.
Сейчас уже вижу, что кое-какой временный мусор нужно убирать (нарпимер внутри listener)...


Последний раз редактировалось mooncar; 01.09.2009 в 20:48.
Старый 01.09.2009, 23:28
Zhihar вне форума Посмотреть профиль Отправить личное сообщение для Zhihar Найти все сообщения от Zhihar
  № 5  
Ответить с цитированием
Zhihar

Регистрация: Sep 2002
Сообщений: 202
а такой вопрос - если я буду хранить bmp данные, а не jpg то это же может привести к чрезмерному расходованию памяти - например для картинки 800x600 jpg c 75% качества составит примерно 150кб, а bmp - 1.4МБ

Старый 01.09.2009, 23:44
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Может бвть это чрезмерно, но другого временного хранилища для оперативного доступа я не знаю...

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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