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

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

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

Регистрация: Apr 2011
Сообщений: 13
По умолчанию Прелоадер для фото, ссылки на которые берутся из XML

Уважаемые формчане, спасибо за внимание,
прошу сразу не кидать помидорами.
(Гугл шустрил, хелп читал, форум вплоть до 7 страницы поиска - перечитал).

У меня уже есть работающий проект, на подобие виртуальной экскурсии. Жмешь на стрелку - переходишь к Виду и т.д. Стрелки, ссылки и ссылки на фото Видов берутся из XML.
Так как вирт. экскурсия достаточно большая, фото Видов долго грузятся, задача сделать прелоадер сразу для всех Видов.

Проблемы две:

1) У меня есть голая болванка, в которую я подгружаю все элементы Вида, согласно ID.
Т.е. загрузить все фото во все Виды сразу - не получиться. Вопрос - я могу просто загрузить в какойто мувик все эти фото, а потом с кеша (если такое возможно) они будут уже быстро загружаться, хоть и ссылка на них будет всё еще из XML? Или же мне надо делать массив объектов хранящих фото и потом уже брать из массива?

2) Как в моем случае теоретически делается прелоадер?
Пробегаюсь циклом по всем видам и черз movieClipLoader, через listener и метод onLoadProgress поочередно гужу всё (куда)?


Пример XML (часть):
Код:
<views>
            <view>
              <url_id>1</url_id>
              <pic_url>http://example.ru/upload/view/2011-05-22_18-44-46_1228936691.jpg</pic_url>
              <arrows>
                      <arrow>
                               <id>0</id>
                               <title>Холл</title>
                               <url>1</url>
                      </arrow>
                      <arrow>
                               <id>2</id>
                               <title>Зеркальный шкаф в холле</title>
                               <url>2</url>
                      </arrow>
               </arrows>
            </view>
</views>
Пример Флеша:
Код AS1/AS2:
function arrows(objeXML, var_projeID, view_pic) {
	// 
	for (i=0; i<objeXML.childNodes.length; i++) {
		if (objeXML.childNodes[i].childNodes[0].childNodes[0].nodeValue == var_projeID) {
			//   загрузка фоновой картинки первого вида VIEW
			obje_win.obje_loadClip.loadMovie(objeXML.childNodes[i].childNodes[7].childNodes[view_pic].childNodes[1].childNodes[0].nodeValue);
			//
			var alphaTween:Tween = new Tween(obje_win, "_alpha", Regular.easeOut, 0, 100, 0.8, true);
			//
			//
			for (j=0; j<objeXML.childNodes[i].childNodes[7].childNodes[view_pic].childNodes[2].childNodes.length; j++) {
				var id = objeXML.childNodes[i].childNodes[7].childNodes[view_pic].childNodes[2].childNodes[j].childNodes[0].childNodes[0].nodeValue;
				obje_win.arrows_clip["strelka"+id]._visible = true;
				obje_win.arrows_clip["title"+id].text = objeXML.childNodes[i].childNodes[7].childNodes[view_pic].childNodes[2].childNodes[j].childNodes[1].childNodes[0].nodeValue;
				obje_win.arrows_clip["strelka"+id].link = objeXML.childNodes[i].childNodes[7].childNodes[view_pic].childNodes[2].childNodes[j].childNodes[2].childNodes[0].nodeValue;
				obje_win.arrows_clip["strelka"+id].onRelease = function() {
					createObje(var_projeID, this.link-1);
				};
			}
		}
	}
}

Старый 28.05.2011, 23:20
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 2  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
ужас.
используйте локальные переменные.
Код AS3:
function arrows(objeXML, var_projeID, view_pic) {
	var nodes:XMLNode = objeXML.childNodes;
	var len:Number  = nodes.length;
	for (i = 0; i < len; i++) {
 
		// projectType
		var projectType:String = nodes[i].childNodes[0].childNodes[0].nodeValue
			if ( projectType == var_projeID) {
		//только название реально надо дать, я не знаю что это
		var viewPicNode:XMLNode	 = nodes[i].childNodes[7].childNodes[view_pic]
				//   загрузка фоновой картинки первого вида VIEW
				obje_win.obje_loadClip.loadMovie(viewPicNode.childNodes[1].childNodes[0].nodeValue);
				//
				var alphaTween:Tween = new Tween(obje_win, "_alpha", Regular.easeOut, 0, 100, 0.8, true);
				//
				//
				var someNode:XMLNode = viewPicNode.childNodes[2].childNodes
				for (j=0; j<someNode.length; j++) {
					var id = someNode[j].childNodes[0].childNodes[0].nodeValue;
					var strelka:MovieClip = obje_win.arrows_clip["strelka" + id];
					strelka._visible = true;
					obje_win.arrows_clip["title"+id].text = someNode[j].childNodes[1].childNodes[0].nodeValue;
					strelka.link = someNode[j].childNodes[2].childNodes[0].nodeValue;
					strelka.onRelease = function() {
						createObje(var_projeID, this.link-1);
					};
				}
			}
		}
}
Это не только повысит читаемость, но и простоту рефакторинга, а некоторых случаях и производительность
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 28.05.2011 в 23:22.
Старый 29.05.2011, 15:51
Arkadiy вне форума Посмотреть профиль Отправить личное сообщение для Arkadiy Найти все сообщения от Arkadiy
  № 3  
Ответить с цитированием
Arkadiy

Регистрация: Apr 2011
Сообщений: 13
Спасибо. Учусь сам, поэтому как то так и выходит.

Но с прелоадером все равно ничего не получается. И так и сяк его, буду гулить.

Старый 02.06.2011, 15:54
Arkadiy вне форума Посмотреть профиль Отправить личное сообщение для Arkadiy Найти все сообщения от Arkadiy
  № 4  
Ответить с цитированием
Arkadiy

Регистрация: Apr 2011
Сообщений: 13
Надеюсь это не противоречит правилам, но может кто то может помочь прикрутить прелоадер к моему творению, естественно не за бесплатно, обещаю полное содействие в этом. Ситуация близка к критической. Спасайте.

Старый 02.06.2011, 16:02
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 5  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
пишите в скайп.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

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

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

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


 


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


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