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

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

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
По умолчанию Запутался в циклах

Проблема такова - Есть XML такой структруры:
Код:
<flats folder="prev/" folder1="photo/">
<d0 name="Аэропорт" pic="0.jpg" folder="prev/001/" folder1="photo/001/" etag="1" tip="сталинка">
<img foto="001.jpg" />
<img foto="002.jpg" />
<img foto="003.jpg" />
</d0>

<d1  name="Цветной бульвар" pic="1.jpg" folder="prev/002/" folder1="photo/002/" etag="1" tip="сталинка">
<img foto="001.jpg" />
<img foto="002.jpg" />
<img foto="003.jpg" />
<img foto="004.jpg" />
<img foto="005.jpg" />
</d1>
и т.д.
</flats>
В нем по атрибутам этаж,тип и т.д. делается поиск во Флеш(IndexOf(),
Базы не знаю,поэтому так)
Есть несколько Combo boxов при кликанье на которые,в строку запоминаются параметры поиск,без проблем показываются превьюшки (pic="...jpg"),дальше идет функция которая должна загружать foto,то бишь детей превьюшек,вот она та и глючит - при шелчке на любую превьюшку грузит foto только последней,как я понимаю у мня там проблема с циклом.Вот код:
Код:
var arr:Array = new Array();
var Arr:Array = new Array();
//* * * * * * * * * * * * * X M L * * * * * * * * * * * * * * * * * * * * * * * * * 
myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = function(success) {
	myNod = myXML.firstChild;
	arr = myNod.childNodes;
	Folder = myNod.attributes.folder1;
};
myXML.load("flats.xml");
//
function Parsing(txt:String, k:Number) {
	for (j=0; j<arr.length; j++) {
		var myNode:XMLNode = arr[j];
		switch (k) {// тут выбирается по какому параметру искать
			case 0 :
				o = myNode.attributes.etag;// по этажу
				break;
			case 1 :
				o = myNode.attributes.tip;// по типу
				break;
			case 2 :
				o = myNode.attributes.name;// по метро
				break;
		}
		pic = myNode.attributes.pic;
		folder = myNode.attributes.folder;
		folder1 = myNode.attributes.folder1;
		f2 = myNode.childNodes;
		var url:String = Folder+pic;
		if (o.indexOf(txt) != -1) {
			if (o != undefined) {
				Arr.push(url);
				for (n=0; n<Arr.length; n++) {
					var dot:MovieClip = target.createEmptyMovieClip("dot"+n, n);
					//тут всякая лабутень с загрузкой
					dot.pic = Folder+pic;
					dot.f = f2;
					dot.folder = folder;
					dot.folder1 = folder1;
					dot.onPress = function() {
						pokaz(this.f,this.folder,this.folder1);//а вот и проблема - вместо ожидаемых
					};// индивидуальных,для каждого dot - f,folder и folder1 - они все время равны параметрам последнего
					var mcl:MovieClipLoader = new MovieClipLoader();
					mcl.loadClip(Arr[n],pic_mc);//находит и грузит превьюхи отлично и без проблем
				}
			}
		}
	}
	Arr = [];
}
//function pokaz(//***//все старательно грузит и формирует,но так как получает URL для загрузки одно и тоже ,то и грузит одно и тоже
Что самое интересное если сделать не
Код:
pic = myNode.attributes.pic;
folder = myNode.attributes.folder;
folder1 = myNode.attributes.folder1;
f2 = myNode.childNodes;
Код:
ass.push(myNode.childNodes)
ass1.push(myNode.attributes.folder)
ass2.push(myNode.attributes.folder1)
и указывать дальше не
Код:
dot.pic = Folder+pic;
dot.f = f2;
dot.folder = folder;
dot.folder1 = folder1;
Код:
dot.f=ass[1]
dot.folder=ass1[1]
dot.folder1=ass2[1]
,то все работает,а стоит только указать
Код:
dot.f=ass[n]
dot.folder=ass1[n]
dot.folder1=ass2[n]
,то опять все глючит.
//* * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * *
Что посоветуете,а то у меня уже голова уже опухла от этих циклов.
__________________
Я просто добрый шутник.

Старый 28.10.2008, 02:35
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 2  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
чтоб не пухла разбейте служную функцию на более простые и делайте задачи по этопно
Код:
// поиск квартир согласно фильтру
function find_flats(txt:String, filter:Number) {
	var results = new Array();
	// тут выбирается по какому атрибуту искать
	switch (filter) {
		case 0 : attribute = 'etag'; break;
		case 1 : attribute = 'tip'; break;
		case 2 : attribute = 'name'; break;
		default: return;
	}
	// цыкл по квартирам
	var node = myXML.firstChild.firstChild;
	while(node){
		// поиск текста в заданном атрибуте
		if( node.attributes[attribute].indexOf(txt) != -1) results.push(node);
		node = node.nextSibling;
	}
	// возвращаем ссылки на найденные квартиры
	return results;
}

// показываем привьюхи и назначем кнопки на фулсайз
function show_pics(flats){
	// цыкл по квартирам
	for( var i = 0; i < flats.length; i++ ){

		var node = flats[i].firstChild;
		// цыкл по фоткам
		while(node){
			trace(node.attributes['foto']);
			node = node.nextSibling;
		}
	}
	
}
+
и пишите более читаемый xml
зачем разбивать пути на кучу составляющих?
Код:
<img src="photo/001/001.jpg" thumb="prev/001/001jpg" />
задавайте атрибутам логические имена согласно английскому языку.
квартирам также как а картинкам задавайте одинаковые имена тегов.


Последний раз редактировалось Mnilionic; 28.10.2008 в 03:00.
Старый 28.10.2008, 08:51
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 3  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
to _etcs:Thanks
OK?
__________________
Я просто добрый шутник.


Последний раз редактировалось scarbo; 28.10.2008 в 14:47.
Создать новую тему Ответ Часовой пояс GMT +4, время: 14:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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