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

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

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

Регистрация: Aug 2009
Сообщений: 6
По умолчанию перенести данные из XML в масив

Доброго времени суток!
Как лучше всего перенести данные из XML в масив?
я пробывал так:
Код AS1/AS2:
var Art=new Array();
var myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = function (success)
{
    if (success)
    {
        for (var i = 0; i < this.firstChild.childNodes.length; i++)
        {
           _root.Art.push(this.firstChild.childNodes[i].attributes.text);
		   trace(_root.Art[i]);
        } // end of for
    } // end if
};
myXML.load("data.xml");
_root.Art.push(100);
Во время выполнения load в масиве есть даные но после он оказывается пустым. Еще никак не пойму почему оператор _root.Art.push(100) выполняетсяя раньше чем myXML.load("help.xml"). Помогите разобратся!

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
myXML.load("help.xml") запускает загрузку файла, но не ждет, пока файл загрузится. push() выполняется после load(), но потом срабатывает onLoad() и затирает ваш массив.


Последний раз редактировалось alexcon314; 05.08.2009 в 10:54.
Старый 05.08.2009, 16:28
Hopachai вне форума Посмотреть профиль Отправить личное сообщение для Hopachai Найти все сообщения от Hopachai
  № 3  
Ответить с цитированием
Hopachai

Регистрация: Aug 2009
Сообщений: 6
Цитата:
но не ждет, пока файл загрузится
спасибо, этого не знал.
Цитата:
но потом срабатывает onLoad() и затирает ваш массив.
там же тоже работает push, очищатся масив вроде не должен

Неужели никто не заносит хмл в масивы? Кто знает провереный способ поделитесь куском кода

Старый 05.08.2009, 17:47
_SAM_ вне форума Посмотреть профиль Отправить личное сообщение для _SAM_ Посетить домашнюю страницу _SAM_ Найти все сообщения от _SAM_
  № 4  
Ответить с цитированием
_SAM_

Регистрация: May 2007
Сообщений: 159
Отправить сообщение для _SAM_ с помощью ICQ
Код:
function loadXML(loaded) {
	if (loaded) {
			xmlNode=this.firstChild
			total=xmlNode.childNodes.length
			for(i:Number=0;i<total;i++){
					link_pic[i] = xmlNode.childNodes[i].childNodes[1].childNodes
					name_pic[i] = xmlNode.childNodes[i].childNodes[0].childNodes
					url_big[i] = xmlNode.childNodes[i].childNodes[2].childNodes
			}
			trace(link_pic.join(".."))
		
		
	} else {
		trace("Error loading XML partners.xml");
	}// end else if
}// End of the function



xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("partners.xml");


Код:
<?xml version="1.0" encoding="utf-8"?>
<partners>
	<partner>
		<name>Ромашка, ООО</name>
		<url>partners/electro_profi.jpg</url>
		<banner>http://dek.demo.metric.ru/attachment.aspx?id=419</banner>
	</partner>
	<partner>
		<name>2Ромашка, ООО</name>
		<url>partners/svetlon.jpg</url>
		<banner>http://dek.demo.metric.ru/attachment.aspx?id=419</banner>
	</partner>
	<partner>
		<name>Ромашка, ООО</name>
		<url>partners/RusSvet137.jpg</url>
		<banner>http://dek.demo.metric.ru/attachment.aspx?id=419</banner>
	</partner>
	<partner>
		<name>Ромашка, ООО</name>
		<url>partners/electro_profi.jpg</url>
		<banner>http://dek.demo.metric.ru/attachment.aspx?id=419</banner>
	</partner>
	<partner>
		<name>Ромашка, ООО</name>
		<url>partners/electro_profi.jpg</url>
		<banner>http://dek.demo.metric.ru/attachment.aspx?id=419</banner>
	</partner>

</partners>

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

Регистрация: Aug 2009
Сообщений: 6
_SAM_ большое спасибо, этот код работает.
Но остается вопрос. Мне же нужно дальше работать с масивом, и только после того как вся хмл-ка в него загрузится. Если я начну с ним работать в следующих строчках программы после этого кода то масив опять окажется пустым, ведь
Цитата:
myXML.load("help.xml") запускает загрузку файла, но не ждет, пока файл загрузится
Как сделать задержку чтобы подождать пока хмл окажется в масиве и продолжить с ним работать?

Старый 05.08.2009, 19:25
_SAM_ вне форума Посмотреть профиль Отправить личное сообщение для _SAM_ Посетить домашнюю страницу _SAM_ Найти все сообщения от _SAM_
  № 6  
Ответить с цитированием
_SAM_

Регистрация: May 2007
Сообщений: 159
Отправить сообщение для _SAM_ с помощью ICQ
Код:
...
trace(link_pic.join(".."))
...
После того как прокарсишь ХМЛ, вызываешь нужную функцию

Код:
...
trace(link_pic.join(".."))
some_function();
...

Старый 05.08.2009, 20:07
Hopachai вне форума Посмотреть профиль Отправить личное сообщение для Hopachai Найти все сообщения от Hopachai
  № 7  
Ответить с цитированием
Hopachai

Регистрация: Aug 2009
Сообщений: 6
понял, спасибо.

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

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

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


 


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


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