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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 14.03.2004, 21:01
Vinny[x] вне форума Посмотреть профиль Отправить личное сообщение для Vinny[x] Найти все сообщения от Vinny[x]
  № 1  
Vinny[x]

Регистрация: Mar 2004
Адрес: Belarus
Сообщений: 31
По умолчанию Как выдрать данные из функции после загрузки Xml?

Суть дела такова. Имеется скрипт в котором функция считывает данные из ХML файла и заносит данные в массив.
Объясните мне, почему у меня не получается вывести данные массивы за пределами функции?
Как это сделать правильно, чтобы все работало?
Мне эти данные нужно обрабатывать по всей временной шкале.
Может посоветуете более рациональный вариант хранения данных, чем мой 3-х мерный массив?

----Скрипт---
Код:
function ParseXML() {
	quiz = new Array();
	rootnode = xmlDoc.firstChild;
	he = rootnode.firstChild;
	for(var q=0; rootnode.childNodes.length > q; q++ ){
		if(q>0){
			he = he.nextSibling;
		}
		children = he.childNodes;
		quiz[q] = new Array();
		for(var i = 0; i < children.length; i++){
		quiz[q][i] = new Array();
		trace(children[i].firstChild.toString());
		quiz[q][i]["question"] = children[i].firstChild;
		atrib = children[i].attributes;
			for(attrib in atrib){
					quiz[q][i]["answer"] = atrib[attrib];
					trace(atrib[attrib].toString());
				}
		}
	}
trace(quiz[0][3]["question"]); // --- Вот тут выводит данные 
	}
xmlDoc=new XML();
xmlDoc.ignoreWhite = true;
xmlDoc.load("test3.xml");
xmlDoc.onLoad = ParseXML;
stop();
trace(quiz[0][3]["question"]); // --- А вот тут не выводит
---test3.xml-------
Код:
<?xml version="1.0" encoding="utf-8"?>
<testing>
 		
	    <quiz type="list" time="15">
		<questionintro>Question 1</questionintro>
		<answer correct="false">q1 Answer 1</answer>
		<answer correct="true">q1 Answer 2</answer>
		<answer correct="false">q1 Answer 3</answer>
		<answer correct="false">q1 Answer 4</answer>
	    </quiz>
		<quiz type="list" time="15">
		<questionintro>Question 2</questionintro>
		<answer correct="false">q2 Answer 1</answer>
		<answer correct="true">q2 Answer 2</answer>
		<answer correct="false">q2 Answer 3</answer>
		<answer correct="false">q2 Answer 4</answer>
	    </quiz>

</testing>

Старый 14.03.2004, 22:25
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
надо дождаться загрузки
this.onEnterFrame=function(){
if(quiz){
trace(quiz[0][3]["question"]); // --- А вот тут не выводит
delete this.onEnterFrame;
}
}

Старый 15.03.2004, 21:21
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 3  
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
последовательность выполнение твоего сткрипта:
Код:
xmlDoc=new XML();
xmlDoc.ignoreWhite = true;
xmlDoc.load("test3.xml");
stop();
trace(quiz[0][3]["question"]); // --- А вот тут не выводит 
xmlDoc.onLoad = ParseXML;
////////////
function ParseXML() {
	quiz = new Array();
	rootnode = xmlDoc.firstChild;
	he = rootnode.firstChild;
	for(var q=0; rootnode.childNodes.length > q; q++ ){
		if(q>0){
			he = he.nextSibling;
		}
		children = he.childNodes;
		quiz[q] = new Array();
		for(var i = 0; i < children.length; i++){
		quiz[q][i] = new Array();
		trace(children[i].firstChild.toString());
		quiz[q][i]["question"] = children[i].firstChild;
		atrib = children[i].attributes;
			for(attrib in atrib){
					quiz[q][i]["answer"] = atrib[attrib];
					trace(atrib[attrib].toString());
				}
		}
	}
trace(quiz[0][3]["question"]); // --- Вот тут выводит данные 
	}
вот так

Старый 15.03.2004, 21:34
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
а че 'вот так'
первый trace так и даст undefined, потому как quiz появится тока по оканчании загрузки ( см. выше)

Старый 16.03.2004, 21:10
2K WebStudio вне форума Посмотреть профиль Отправить личное сообщение для 2K WebStudio Посетить домашнюю страницу 2K WebStudio Найти все сообщения от 2K WebStudio
  № 5  
2K WebStudio
 
Аватар для 2K WebStudio

Регистрация: Jul 2002
Адрес: Russia Federation Moscow
Сообщений: 779
Отправить сообщение для 2K WebStudio с помощью ICQ
я просто показал почему он и не должен выводить.
onLoad dagjkyztncz в конце, во всяком случае, позже всех действий кадра.

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

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

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


 


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


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