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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.03.2008, 04:49
Манюня вне форума Посмотреть профиль Отправить личное сообщение для Манюня Найти все сообщения от Манюня
  № 1  
Ответить с цитированием
Манюня
[+4 18.03.08]
 
Аватар для Манюня

Регистрация: Jan 2008
Сообщений: 54
Отправить сообщение для Манюня с помощью ICQ
Flame XML. Зациклилась функция((

Есть документ XML:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<event>
     <camera_name>Window 1</camera_name>
     <file>
          <file_url>//201.6.107.107/share/1/1/4/001D6A208BFB</file_url>
          <date>2008-03-14</date>
          <time>18:03:20</time>
          <order>1</order>
     </file>
</event>
Вот по-пыталась создать функцию(которые еще плохо умею писать), она зацикливается.
Код:
readXML = function(node_1 : XMLNode){
					var nodeURL : XMLNode = node_1.firstChild; 
					var fileURL : String; 
					fileURL = nodeURL.firstChild.toString();	// получила url адрес изобржния	
			  		trace(fileURL);
					var nodeDate : XMLNode = node_1.childNodes[1];		
					var date : String;
					date = nodeDate.firstChild.toString(); // получила дату
					trace(date);
					var nodeTime : XMLNode = node_1.childNodes[2];
					var time : String; 
					time = nodeTime.firstChild.toString(); // получила время
					trace(time);
					var nodeOrder : XMLNode = node_1.childNodes[3];
					var order : String;
					order = nodeOrder.firstChild.toString(); // получила порядковый номер
					trace(order);
};
var my_xml:XML = new XML () 
my_xml.ignoreWhite = true;
my_xml.onLoad = function (success) {
	if (success) {
		trace (my_xml);
		trace(my_xml.hasChildNodes());
		trace(my_xml.firstChild.firstChild.nodeType);
		trace(my_xml.firstChild.childNodes[0]);
		var node : XMLNode = my_xml.firstChild.childNodes[0];
		trace(node.firstChild);		
			var _node : XMLNode = my_xml.firstChild.childNodes[1];
			if(_node.nodeName == 'file'){				
				if(_node.hasChildNodes()){ //если элемент <file>имеет дочерние узлы, то читаем их
				 	readXML(_node);					
				}			
			}
	} else {
		trace ('Not working');
	}
};
my_xml.load ('new.xml');
Функция должна по задумке вернуть строки fileURL, date, time, order. Помогите пожалуйста переделать, чтобы работала

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

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

Старый 17.03.2008, 05:11
Манюня вне форума Посмотреть профиль Отправить личное сообщение для Манюня Найти все сообщения от Манюня
  № 3  
Ответить с цитированием
Манюня
[+4 18.03.08]
 
Аватар для Манюня

Регистрация: Jan 2008
Сообщений: 54
Отправить сообщение для Манюня с помощью ICQ
Компилю (или как это называется в AS2 ?), и мне бесконечно выдаются результаты работы кода в output, пока не закрою окно проигрывателя.

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Сколько раз проигрывается кадр, в котором написан этот код? )

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

Регистрация: Mar 2008
Адрес: Donetsk
Сообщений: 16
Отправить сообщение для copyPaste с помощью ICQ
Ну вообщето, для этого документа - 1 раз. Но если загрузить другой xml документ, который будет содержать 2 и и более дочерних узлов <file>, то полюбому функцию написать нужно. Я уже переделала. конечно, но всеравно пока еще кака*ка, а ен программа получается))
Код:
readXML = function(node_1 : XMLNode): String{					
					fileURL = node_1.childNodes[0].toString();
					date = node_1.childNodes[1].toString;					
					time = node_1.childNodes[2].toString;
					order = node_1.childNodes[3].toString;
					return fileURL, date, time, order;
}
var my_xml:XML = new XML (); 
my_xml.ignoreWhite = true;
my_xml.onLoad = function (success) {
	if (success) {
		var v : XMLNode = my_xml.firstChild;//самый важный дочерний узел		
		if(v.childNodes[1].nextSibling){//выполнить функцию readXML если существует братский узел file		
			var p : XMLNode = v.lastChild;//последний дочерний узел
			index = p.lastChild.firstChild;
			trace(index);
			}//нашла последний индекс - количество файлов}
		if(v.childNodes[1].nodeName == 'file'){				
			if(v.childNodes[1].hasChildNodes()){ //если элемент <file>имеет дочерние узлы, то читаем их
			 	var fileNode : XMLNode = v.childNodes[1];
				trace(fileNode);
				readXML(fileNode.firstChild);						
			}
		}
	} else {
		trace ('Not working');
	}
}
my_xml.load ('new.xml');

Старый 17.03.2008, 09:05
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 6  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Я бы сделал вот так:
Код:
function parseXML(x:XML) {
	
	var nodeEvent:DOM = new DOM(x.firstChild);
	var cameraName:String = DOM.asString(nodeEvent.camera_name);
	
	var nodeFiles:DOM = nodeEvent.file;
	
	for (var i=0; i<nodeFiles.length; i++) {
		var nodeFile = nodeFiles[i];
		var fileURL:String = DOM.asString(nodeFile.file_url, "");
		var date:String = DOM.asString(nodeFile.date, "");
		var time:String = DOM.asString(nodeFile.time, "");
		var order:Number = DOM.asNumber(nodeFile.order, 1);		
		
		trace ("fileURL: "+fileURL);
		trace ("date: "+date);
		trace ("time: "+time);
		trace ("order: "+order);
	}	
};

var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success) {
	if (success) {
		_root.parseXML(this);
	} else {
		trace('File not found');
	}
};
my_xml.load('new.xml');
Вот необходимый класс DOM (распакуй в папку с .fla файлом).
Вложения
Тип файла: zip DOM.zip (2.3 Кб, 44 просмотров)

Старый 17.03.2008, 09:32
Манюня вне форума Посмотреть профиль Отправить личное сообщение для Манюня Найти все сообщения от Манюня
  № 7  
Ответить с цитированием
Манюня
[+4 18.03.08]
 
Аватар для Манюня

Регистрация: Jan 2008
Сообщений: 54
Отправить сообщение для Манюня с помощью ICQ
интересненько. Спасибо. У меня так в конце концов вышло
Код:
readOrder = function(node_1:XMLNode):String{			
		order = node_1.childNodes[3].firstChild.toString();
		return order;
}
createNewTime = function(node_1:XMLNode):String{
		time = node_1.childNodes[2].firstChild.toString();
		arr = time.split(":");
		newTime = arr[0] + arr[1] + arr[2];
		return newTime;	
	}
createNewDate = function(node_1:XMLNode):String{
		date = node_1.childNodes[1].firstChild.toString();
		ar = date.split("-");
		newDate = ar[0] + ar[1] + ar[2];
		return newDate;
	}
createNewUrl = function(node_1:XMLNode):String{
		fileURL = node_1.childNodes[0].firstChild.toString();
		newUrl = slise(fileURL[2], some_url.length);
		return newUrl;
 	}
	

var my_xml:XML = new XML (); 
my_xml.ignoreWhite = true;
my_xml.onLoad = function (success) {
	if (success) {
		var v : XMLNode = my_xml.firstChild;//самый важный дочерний узел		
		if(v.childNodes[1].nextSibling){//выполнить функцию readXML если существует братский узел file		
			var p : XMLNode = v.lastChild;//последний дочерний узел
			index = p.lastChild.firstChild;
			trace(index);
			}//нашла последний индекс - количество файлов}
		if(v.childNodes[1].nodeName == 'file'){				
			if(v.childNodes[1].hasChildNodes()){ //если элемент <file>имеет дочерние узлы, то читаем их
			 	var fileNode : XMLNode = v.childNodes[1];
				trace(fileNode);
										
			}
		}
	} else {
		trace ('Not working');
	}
}
my_xml.load ('new.xml');

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

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

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


 


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


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