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

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

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

Регистрация: Oct 2015
Сообщений: 32
Такой вопрос меня волнует, опять пол дня ушло на безуспешные попытки:
как мне прочитать значение атрибута @b в неком елементе, если я знаю что значение его атрибута @a="10"?
Код:
<xml>
  <lvl1 a="10" b="100" />
  <lvl1 a="20" b="200" />
</xml>
Пытаюсь использовать xml.lvl1.(@a == "10") ..а дальше как лепить .@b? Или нужно создавать XMLList для результата или что, не пойму..

Ага ,вот по вашей ссылочке E4X прошел, там решение:
Код AS3:
var sales:XML = <sales vendor="Джон">
    <item type="горох" price="4" quantity="6"/>
    <item type="морковь" price="3" quantity="10"/>
    <item type="чипсы" price="5" quantity="3"/>
  </sales>;
 
trace(sales.item.(@type == "морковь").@quantity );


Последний раз редактировалось 0l3; 19.01.2017 в 00:49.
Старый 19.01.2017, 01:42
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 22  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Чтобы точно узнать что возвращается используй toXMLString(), чтобы понять что делать дальше
Код AS3:
//вместо
trace(xml.lvl1.(@a == "10")); //
//использовать
trace(xml.lvl1.(@a == "10").toXMLString()); //<lvl1 a="10" b="100"/>
trace(<lvl1 a="10" b="100"/>.@b); //100
//значит
trace(xml.lvl1.(@a == "10").@b); //100

Старый 19.01.2017, 02:08
0l3 вне форума Посмотреть профиль Отправить личное сообщение для 0l3 Найти все сообщения от 0l3
  № 23  
Ответить с цитированием
0l3
 
Аватар для 0l3

Регистрация: Oct 2015
Сообщений: 32
Ложусь спать с надеждой на завтрашний день и новые знания =) Благодарю.

Не удержался, проверил полезность .toXMLString(), этого инструмента мне не хватало =)


Последний раз редактировалось 0l3; 19.01.2017 в 02:45.
Старый 23.01.2017, 16:50
0l3 вне форума Посмотреть профиль Отправить личное сообщение для 0l3 Найти все сообщения от 0l3
  № 24  
Ответить с цитированием
0l3
 
Аватар для 0l3

Регистрация: Oct 2015
Сообщений: 32
Казалось бы простая задача, но у меня вызывает трудности.. Пытаюсь обойти каждый узел дерева.
Когда делаю так..
Код AS3:
var xml:XML = <xml>
  <LVL0 name="lvl0">
    <LVL1 name="lvl1"/>
    <LVL1 name="lvl1"/>
      <LVL2 name="lvl2"/>
      <LVL2 name="lvl2"/>
    <LVL1 name="lvl1">
  </LVL0 name="lvl0">
</xml>
 
for each (var item:XML in xml..*.*)
{
  trace("=>", item.toXMLString(), "Parent:", item.parent().@name);
}
.. получаю только список LVL1. Маркер "=>" показывает обращение к узлу и оказался нужен так как trace() показывает не только елемент, а и его потомков, к которым реально обращения не происходит. Как это побороть и перебрать пошагово все узлы xml-дерева? Вариант с вложенными циклами мне не подходит так как я не знаю глубины дерева.. точнее она может измениться (LVL0.. LVLn).

_______________________
Нашел тему (http://www.flasher.ru/forum/showthread.php?t=123545) изучаю..


Последний раз редактировалось 0l3; 23.01.2017 в 17:58.
Старый 24.01.2017, 01:35
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 25  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
			for each (var node:XML in xml.descendants())
			{
				trace(node.name().localName, "parent:", node.parent().name().localName);
			}
Добавлено через 1 минуту
ну, или просто .@name если нужны атрибуты а не имена нод.
__________________
Reality.getBounds(this);

Старый 24.01.2017, 02:33
0l3 вне форума Посмотреть профиль Отправить личное сообщение для 0l3 Найти все сообщения от 0l3
  № 26  
Ответить с цитированием
0l3
 
Аватар для 0l3

Регистрация: Oct 2015
Сообщений: 32
И как я его не заметил =/ не внимательный.
Код:
descendants(name:Object = *):XMLList
Возвращает все потомки (дочерние объекты всех уровней) объекта XML, обладающие данным параметром имени.
Спасибо.

Старый 24.01.2017, 22:52
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 27  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
для обхода дерева c неизвестной глубиной используют рекурсию
Код AS3:
function print (xml:XML):void
{
	trace(xml.toXMLString());
	for each (var child:XML in xml.*)
	{
		print(child);
	}
}
print(xml);
или цикл со стеком
Код AS3:
var stack:Vector.<XML> = new <XML>[xml];
while (stack.length > 0)
{
	var node:XML = stack.pop();
	trace(node.toXMLString());
	var children:XMLList = node.*;
	for (var i:int = children.length() - 1; i >= 0; i--)
	{
		stack.push(children[i]);
	}
}
в зависимости от задачи


Последний раз редактировалось Nooob; 24.01.2017 в 23:31.
Старый 25.01.2017, 01:49
0l3 вне форума Посмотреть профиль Отправить личное сообщение для 0l3 Найти все сообщения от 0l3
  № 28  
Ответить с цитированием
0l3
 
Аватар для 0l3

Регистрация: Oct 2015
Сообщений: 32
А почему для стека используется Vector а не Array?

Старый 25.01.2017, 01:50
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 29  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
0l3, разница лишь в том, что Vector - типизированный. В любом случае можно использовать оба варианта.
__________________
There is no thing in this world that is not simple.

Старый 25.01.2017, 16:29
0l3 вне форума Посмотреть профиль Отправить личное сообщение для 0l3 Найти все сообщения от 0l3
  № 30  
Ответить с цитированием
0l3
 
Аватар для 0l3

Регистрация: Oct 2015
Сообщений: 32
Я встречал код, в котором объекты экрана тоже добавлялись в список типа Vector и я подумал, что у него есть некие преимущества перед Array о которых я не знаю.. но это уже тема отдельного топика. Спасибо.

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

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

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


 


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


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