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

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

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

Регистрация: Mar 2009
Сообщений: 49
Cool Запись в массив?

Добрый день

Как сделать что бы , загружались картинки (через xml) и загружались в массив, так будто бы они находятся в буффере(Library) ??





Подробнее:
Так сделано,когда подгружает из библиотеке по Linkage:

Код AS1/AS2:
var linksID:Array=["1","2","3","4","5","6","7"];
после парсинга xml, я получаю массив
image[i]

Код AS1/AS2:
for(j=0;j<total;j++)
		{
		trace("j: "+j + " , " + "im: "+image[j]);
 
		}
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
Соответвенно как мне сразу загрузить в буффер и работать как-будто я импортировал из в Библиотеку вручную ( получить массив ссылок на Linkage/Inditefier)

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

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


Последний раз редактировалось mooncar; 15.10.2009 в 20:36.
Старый 15.10.2009, 20:45
sy555 вне форума Посмотреть профиль Отправить личное сообщение для sy555 Найти все сообщения от sy555
  № 3  
Ответить с цитированием
sy555

Регистрация: Mar 2009
Сообщений: 49
Спасибо за подсказку попробуем реализовать это)

Добавлено через 24 минуты
Вопрос как добавить ?

Код AS1/AS2:
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());
 
 
}
Такой код и не будет работать, т.к.
Код:
public static loadBitmap(id:String) : BitmapData

Возвращает новый экземпляр BitmapData, который содержит растровое изображение символа, определенного в библиотеке под указанным идентификатором (ID).
Xml , дает нам лишь массив путей. , как загрузить в экземпляр BitmapData?


Последний раз редактировалось sy555; 15.10.2009 в 21:50.
Старый 15.10.2009, 21:17
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 4  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Mooncar, скажите что вы записывали в массив? Часто сталкивался с подобным, но приходилось решать проблему кустарным способом...
Возможно я плохо знаю Класс BitmapData. Отсюда подобние вопроссы.

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вот кусок кода.
В проекте есть лента событий. Функция загружает картинку к определенному событию за определенный год. Данный кусок кода работает в этом проекте в составе общего прелоадера для всего ролика (проект большой). Привожу как есть.
Код AS1/AS2:
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 = пусто.
Функция вызывается из другой по определенному алгоритму загрузки общих данных шкалы событий.
В нужный момент, когда юзер проходит по ленте событий года, из массива картинки приаттачиваются в мувик-контейнер:
Код AS1/AS2:
...
mc.createEmptyMovieClip('image', 0);
mc.image.attachBitmap(_root.EVENTSBITMAP['eventFoto' + year + n], 0);
mc - это объектная ссылка для некого контейнера для иллюстрации...


Последний раз редактировалось mooncar; 15.10.2009 в 22:59.
Старый 15.10.2009, 22:21
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 6  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
А за тем как массив набит:
Код AS1/AS2:
clip.attachBitmap(EVENTSBITMAP[номер], this.getNextHighestDepth());
?

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

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


Последний раз редактировалось mooncar; 15.10.2009 в 22:38.
Старый 15.10.2009, 22:49
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 8  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Возьму этот метод на заметку. Спасибо!

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

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

Старый 15.10.2009, 23:18
sy555 вне форума Посмотреть профиль Отправить личное сообщение для sy555 Найти все сообщения от sy555
  № 10  
Ответить с цитированием
sy555

Регистрация: Mar 2009
Сообщений: 49
Не совсем я понял как это работает, если можно подсобить..

добавил своих комментов,где ошибся?
Код AS1/AS2:
 
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]);
 
}
откуда берется target_mc?
что делает listenerEFoto.onLoadInit?


и правильно ли я понял, что это массив EVENTSBITMAP
будет выглядеть так EVENTSBITMAP=["ссылка на fon.jpg , загруженный динамически в библиотеку"]

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

Теги
xml , буферизация , массивы , парсинг

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

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


 


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


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