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

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

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

Регистрация: Feb 2006
Сообщений: 97
По умолчанию Как из функции вытащить ссылку на XMLNode

Код:
function searchNode (myXML, nN:String){
	//ищет нод по имени nN в myXML
	for (var i = 0; i<myXML.childNodes.length; i++) {
		if (String (myXML.childNodes[i].nodeName) != nN) {
			searchNode (myXML.childNodes[i], nN);
		} else {
			ccc = myXML.childNodes[i];
			return myXML.childNodes[i];
		}
	}
}
хочу юзать так:
Код:
bbb = searchNode (des_xml, 'atp');
ссс - получается нормальная юзабельная ссылка, bbb получется undefined
//в общем сабж

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

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
1. в чем может быть косяк:
Код:
function searchNode (myXML, nN:String){
тип функции не указан хотя return есть
2. можно попробовать
Код:
ccc = myXML.childNodes[i].toString()
3. может вы неуспеваете дождаться окончания загрузки ХМЛ а уже с ним что-то делаете...
__________________
"We Are The Champions My Friends!" Queen


Последний раз редактировалось CorC; 23.12.2006 в 10:50.
Старый 23.12.2006, 10:29
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
1. У меня это работает (xml описан в скрипте)
2. Зачем в строке if (String (myXML.childNodes[i].nodeName)... стоит приведение имени нода к String, когда имя нода и так String?

И наконец главный вопрос:
3. Что будете делать, если у вас несколько нодов с именем 'atp'?

Вот функция который обходит весь xml и возвращает массив нодов с заданным именем.
Код:
//// ноды с именем A имеют номера id: 1,4,6,7
//// ноды с именем B имеют номера id: 2,3,5,8
var xml:XML = new XML ("<nodeA id='1'><nodeB id='2'><nodeB id='3'><nodeA id='4'></nodeA></nodeB><nodeB id='5'></nodeB><nodeA id='6'><nodeA id='7'></nodeA></nodeA></nodeB><nodeB id='8'></nodeB></nodeA>");
xml.ignoreWhite = true;

function searchNode (xml:XML, name:String, array:Array):Array {
	if (arguments.length < 3) {
		var array:Array = new Array ();
	}
	if (xml.nodeName == name) {
		array.push (xml);
	}
	if (xml.hasChildNodes () || xml.childNodes.length != 0) {
		var i:Number = 0;
		while (xml.childNodes[i]) {
			searchNode (xml.childNodes[i++], name, array);
		}
	}
	return array;
}

var arrayNodeA:Array = searchNode (xml, 'nodeA');
var arrayNodeB:Array = searchNode (xml, 'nodeB');
for (var i:Number = 0; i < arrayNodeA.length; i++) {
	trace (arrayNodeA[i].attributes.id);
}
trace ("");
for (var i:Number = 0; i < arrayNodeB.length; i++) {
	trace (arrayNodeB[i].attributes.id);
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.12.2006, 11:12
mrspb вне форума Посмотреть профиль Отправить личное сообщение для mrspb Найти все сообщения от mrspb
  № 4  
Ответить с цитированием
mrspb

Регистрация: Feb 2006
Сообщений: 97
CorC
с типом тож не хочет...
iNils
1. примерно такая же функция есть и у меня. но надо "лёгкую" функцию тк вызываться она будет часто и на слабой тачке
2. это для перестраховки.
3. xml-ка самопальная, имена в ней уникальные.
тоже запихаю ссылку в массив и его возвращу, пасибо


Последний раз редактировалось mrspb; 23.12.2006 в 11:15.
Старый 23.12.2006, 11:27
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Тогда поиск вообще не нужен. Можно по уникальному id обращаться.
Код:
var xml:XML = new XML ("<nodeA id='1'><nodeB id='2'><nodeB id='w'><nodeA id='4'></nodeA></nodeB><nodeB id='5'></nodeB><nodeA id='6'><nodeA id='7'></nodeA></nodeA></nodeB><nodeB id='8'></nodeB></nodeA>");
xml.ignoreWhite = true;
trace (xml['idMap']['4']);
trace (xml['idMap']['w']);
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.12.2006, 12:26
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А зачем idMap в скобках?

Старый 23.12.2006, 12:27
mrspb вне форума Посмотреть профиль Отправить личное сообщение для mrspb Найти все сообщения от mrspb
  № 7  
Ответить с цитированием
mrspb

Регистрация: Feb 2006
Сообщений: 97
весь код
Код:
des_xml = new XML ();
des_xml.ignoreWhite = true;
des_xml.load('des.des');
des_xml.onLoad = function (){
	trace (true);
}
kkk = [];
this.onMouseDown = function () {
	kkk = searchNode (des_xml, 'atp');
}

function searchNode (myXML:XMLNode, nN:String):Array{
	//ищет нод по имени nN в myXML
	for (var i = 0; i<myXML.childNodes.length; i++) {
		if (String (myXML.childNodes[i].nodeName) != nN) {
			searchNode (myXML.childNodes[i], nN);
		} else if (String (myXML.childNodes[i].nodeName) == nN) {
			trace ('i find node ' + nN);
			var tmp_arr = [myXML.childNodes[i]];
			return tmp_arr;
		}
	}
}
я не понимю почему оно не работает? тут нечему не работать! kkk получается undefined, хотя в массиве был элемент...
XML'ka такая
Код:
<doct>
<atp><![cdata[A<des>АЦП]]></atp>
<ist><![cdata[AV<des>Источник тока]]></ist>
<vm_area><![cdata[V<des>вольтметр]]></vm_area>
</doct>

Старый 23.12.2006, 12:50
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от __etc
А зачем idMap в скобках?
Так и знал, что кто-то на это внимание обратит
Я не пользовался idMap с времен когда сидел на mx (вернее там и писать idMap не нужно было). И когда сейчас стал набирать idMap, то флеш стал ругаться.
Цитата:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 5: There is no property with the name 'idMap'.
trace (xml.idMap['4']);

Total ActionScript Errors: 1 Reported Errors: 1
Заглянул в XMLNode.as, а там отсутствует var idMap:Object. Пришлось в скобках писать.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.12.2006, 12:59
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Мммм, это в каком Flash такая заморочка?

Старый 23.12.2006, 13:06
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от __etc
Мммм, это в каком Flash такая заморочка?
Flash Professional 8.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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