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

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

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

Регистрация: Feb 2006
Сообщений: 33
По умолчанию динамическое меню и childNodes

Код:
k=docs.childNodes.length

for(i=0;i<k;i++){
attachMovie("yearunit","q"+i,i)
this["q"+i]._x=0
this["q"+i]._y=this["q"+(i-1)]._height+this["q"+(i-1)]._y

l=docs.childNodes[i].childNodes.length
...

}
Вкратце про код: составляю вертикальное динамическое меню с разделами и подразделами. Приведен код, который выставляет на сцену мувик "yearunit" (раздел меню) столько раз, сколько прописано в xml, понятно, что количество раз расчитывается при помощи childNodes.length. Но в каждом разделе меню есть определенное количество своих подразделов (тоже прописывается в xml, естественно). Собственно, вопрос: как мне рассчитать количество подразделов при помощи того же childNodes.length, если количество разделов тоже рассчитывается? проблема, как мне кажется, именно в прописывании переменной i (количества разделов) здесь l=docs.childNodes[i].childNodes.length. Если, например, я ставлю просто 0 вместо i, то есть первый чайлд, то все работает, но только с первым разделом, а мне необходимо сделать то же самое со всеми разделами.

Пожалуйста, помогите...


Последний раз редактировалось Keenan; 06.10.2007 в 16:42.
Старый 06.10.2007, 17:32
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
XML-дерево нужно обходить рекурсивной функцией.

Вот тебе пример. Класс практически без описания, разбирешься я думаю.XMLConverter.rar


Последний раз редактировалось udaaff; 06.10.2007 в 17:36.
Старый 06.10.2007, 18:00
Keenan вне форума Посмотреть профиль Отправить личное сообщение для Keenan Найти все сообщения от Keenan
  № 3  
Ответить с цитированием
Keenan

Регистрация: Feb 2006
Сообщений: 33
спасибо, поковыряюсь в классе...
я так понял, просто здесь не получится загнать это дело в цикл?

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
можно,
если цикл положить в функцию, которая в качестве параметра будет принимать узел документа

в этом цикле, каждый нод проверять на дочерние
если есть запускать снова функцию с текущем узлом

так же придусмотреть параметр "вложенности", который будет либо отступы задавать вложенным элементам либо что-нить ещё на вешу усмотрение

Старый 06.10.2007, 19:08
Keenan вне форума Посмотреть профиль Отправить личное сообщение для Keenan Найти все сообщения от Keenan
  № 5  
Ответить с цитированием
Keenan

Регистрация: Feb 2006
Сообщений: 33
спасибо, как вариант попробую...
параметры вложенности уже придуманы) просто из кода стер, тк не в тему они вопросу)

Старый 06.10.2007, 19:35
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
А что за параметр "вложенности"? Зачем он нужен?

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
udaff, чтоб отсчитывать отступы/цвета/прочее
Код:
var str = "<i>";
str +="<i name='1'/>";
str +="<i name='2'>";
str +="		<i name='а'/>";
str +="		<i name='б'>";
str +="			<i name='I'/>";
str +="			<i name='II'/>";
str +="		</i>";
str +="		<i name='ц'/>";
str +="</i>";
str +="<i name='3'/>";
str +="</i>";


var doc:XML = new XML();
doc.ignoreWhite = true;
doc.parseXML(str);



function dd(node:XML, level:Number){
	var children = node.childNodes;
	
	for(var i=0; i<children.length; i++){
		var child = children[i];
		// здесь обрабатываем данные узла
		var padding = "";
		for(var j=0; j<level; j++) padding +="-";
		trace(padding + child.attributes["name"])
		// 
		if(child.firstChild.hasChildNodes) dd(child, level+1);
	}
}
var node = doc.firstChild;
dd(node, 0)

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

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

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


 


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


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