Показать сообщение отдельно
Старый 29.07.2009, 16:05
varvaray вне форума Посмотреть профиль Отправить личное сообщение для varvaray Найти все сообщения от varvaray
  № 5  
Ответить с цитированием
varvaray
 
Аватар для varvaray

Регистрация: Apr 2009
Адрес: Санкт-Петербург
Сообщений: 18
Итак, есть XML приблизительно такого вида:

Код:
<elux>
  <!-- таблица  object -->
    <object>
        <object_id>1</object_id>
        <object_type>shop</object_type>
        <object_name>Орхидея</object_name>
        <object_address>ул. Марата, 7</object_address>
        <object_tel>3335676</object_tel>
        <object_services>доставка цветов, составление букетов, оформление и декорация помещений</object_services>
        <object_url>http://www.orhideja.ru</object_url>
	<object_piс>logo/3.gif</object_piс>
        <object_map_id>1</object_map_id>
        <object_map_x>1000</object_map_x>
        <object_map_y>1000</object_map_y>
	<object_info>Сейчас нам предстоит самая сложная задача в этом проекте — реализовать функцию-мозг, которая будет решать, в какую клетку нужно сделать ход. Первым шагом, который мы осуществим в этом направлении, станет создание переменных, хранящих маршрут обхода рядков для каждой клетки. Как вы помните, необходимо сделать оценку ценности позиции клетки относительно всех рядков, к которым она относится, а вывод сделать по их сумме. Конечно, можно попытаться написать и универсальный алгоритм, который сможет обходить все рядки, к которым принадлежит клетка, вне зависимости от ее положения. Но это слишком сложно для крестиков-ноликов и достойно скорее игры «Пять в ряд». Гораздо проще и быстрее будет перечислить в индивидуальной для каждой клетки переменной индексы клеток, образующих рядки, к которым она относится:</object_info>
	<object_foto1>foto/1.jpg</object_foto1>
	<object_foto2>foto/2.jpg</object_foto2>
	<object_foto3>foto/3.jpg</object_foto3>
	<object_time>с 10 до 18-30</object_time>
    </object>
    <object>
        <object_id>2</object_id>
        <object_type>shop</object_type>
        <object_name>Модница</object_name>
        <object_address>ул. Науки, 5</object_address>
        <object_tel>2340900</object_tel>
        <object_services>сумки из Италии</object_services>
        <object_url>http://www.italy.ru</object_url>
	<object_piс>logo/3.gif</object_piс>
        <object_map_id>2</object_map_id>
        <object_map_x>390</object_map_x>
        <object_map_y>700</object_map_y>
	<object_info>Станции превратились в города-государства, а в туннелях властвуют тьма и страх. Жители Севастопольской, маленькой подземной Спарты, ценой невероятных 
усилий выживают на своей станции и обороняют ее. Но однажды Севастопольская оказывается отрезанной от большого метро, всем ее обитателям грозит страшная гибель. Чтобы спасти людей, нужен настоящий герой…
</object_info>
	<object_foto1>foto/4.jpg</object_foto1>
	<object_foto2>foto/5.jpg</object_foto2>
	<object_foto3>foto/6.jpg</object_foto3>
	<object_time>с 10 до 19</object_time>
    </object>
...
Есть кнопки с алфавитом - русским и английским(по 2-3 буквы на кнопку). При нажатии на кнопку на сцене отображаются все объекты, с названием, начинающимся на соответствующую букву. Проблема в том, что они отображаются в том порядке, в котором записаны в XML. Т.е. не происходит сортировки по алфавиту - простая выборка, и названия на Б оказываются раньше названий на А, если в XML они встречаются раньше.

Внизу привожу кусок кода, который отвечает за выборку. Сначала выборка по "типу". Если язык не выбран - подгружаются все объекты, если русский или английский - то по буквам.
Необходимо, чтобы на экране все было по алфавиту

Код AS1/AS2:
	for (var i = 0; i < elux.firstChild.childNodes.length; i++)
	{
 
		var i_name = new Array ();
		i_name[i] = o_name[i].split ("");
 
		if (o_type[i] == "avto")
		{
			if (ru_eng == "all")
			{
				otrisovka(o_name[i],o_address[i],o_tel[i],o_services[i],o_info[i],o_foto1[i],o_foto2[i],o_foto3[i],o_pic[i],o_time[i],o_url[i]);
			}
			else if (ru_eng == "rus")
			{
				if ((i_name[i][0] == t1) or (i_name[i][0] == t2) or (i_name[i][0] == t3))
				{
					trace (o_name[i]);
					otrisovka(o_name[i],o_address[i],o_tel[i],o_services[i],o_info[i],o_foto1[i],o_foto2[i],o_foto3[i],o_pic[i],o_time[i],o_url[i]);
				}
				else
				{
					//trace("NO   " + i_name[i][0]);
				}
			}
			else if (ru_eng = "eng")
			{
				if ((i_name[i][0] == r1) or (i_name[i][0] == r2))
				{
					trace (o_name[i]);
					otrisovka(o_name[i],o_address[i],o_tel[i],o_services[i],o_info[i],o_foto1[i],o_foto2[i],o_foto3[i],o_pic[i],o_time[i],o_url[i]);
				}
				else
				{
				}
			}
			else
			{
			}
		}
		else
		{
		}
	}

Эм... Хорошо, что вы не видите, что я там, бывает, в инфо пишу... Базы как таковой еще нет, а искать реальную информацию лениво

Добавлено через 4 минуты
Если не знаешь, как делать в принципе - читаешь литературу, копаешься на форумах - и узнаешь. Учиться, бывает, интересно...
__________________
Чому ж я не птица? Чому ж не летаю?