![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 51
|
Не получается вернуть массив из функции. Вроде все перепробовал...
Внутри функции массив трейсится а получить его в руте не получается ... есть идеи?function getXML() { var my_xml:XML = new XML(); my_xml.load("test.xml"); my_xml.onLoad = function(success) { my_xml.ignoreWhite = true; my_xml.parseXML(my_xml.toString()); //trace(my_xml); var vars:Array = new Array(); _root.date_ = my_xml; _root.date_ = _root.date_.firstChild; _root.date_ = _root.date_.firstChild; vars[0] = _root.date_.attributes.name; _root.date_ = _root.date_.nextSibling; vars[1] = _root.date_.attributes.name; _root.date_ = _root.date_.nextSibling; vars[2] = _root.date_.attributes.name; _root.date_ = _root.date_.nextSibling; vars[3] = _root.date_.attributes.name; trace(vars); return vars; } } getXML(); |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
И не получится. Загрузка, это асинхронная операция. То есть вы не можете в каком-то месте вызвать загрузку xml, подождать пока данные загрузятся и продолжить выполнять скрипт дальше.
Поэтому все действия должны описываться в функциях. import mx.utils.Delegate;
var my_xml:XML = new XML ();
my_xml.ignoreWhite = true;
my_xml.onLoad = Delegate.create (this, onLoadXML);
function init () {
/// действия до xml
getXML ();
}
function init2 (array:Array) {
/// действия c xml
trace (array)
}
function getXML () {
my_xml.load ("test.xml");
}
function onLoadXML (success) {
trace(my_xml);
var vars:Array = new Array ();
vars[0] = my_xml.firstChild.attributes.name;
vars[1] = my_xml.firstChild.attributes.name;
vars[2] = my_xml.firstChild.attributes.name;
vars[3] =my_xml.firstChild.attributes.name;
init2 (vars);
}
init ();
|
|
|||||
|
по моему вобще синтаксис не соблюден..из хелпа:
З.Ы. как в коде цветом выделять?( Последний раз редактировалось nOobCrafter; 27.03.2009 в 20:45. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
|
|
|||||
|
Регистрация: Jan 2009
Сообщений: 51
|
Спасибо iNils
Код работает исправно: function getXML() { my_xml.ignoreWhite = true; my_xml.parseXML(my_xml.toString()); //trace(my_xml); var vars:Array = new Array(); _root.date_ = my_xml; _root.date_ = _root.date_.firstChild; _root.date_ = _root.date_.firstChild; vars[0] = _root.date_.attributes.name; _root.date_ = _root.date_.nextSibling; vars[1] = _root.date_.attributes.name; _root.date_ = _root.date_.nextSibling; vars[2] = _root.date_.attributes.name; _root.date_ = _root.date_.nextSibling; vars[3] = _root.date_.attributes.name; return vars; } var my_xml:XML = new XML(); my_xml.load("test.xml"); my_xml.onLoad = function(saccess:Boolean) { var vars = getXML(); trace(vars); } |
|
|||||
|
Регистрация: Dec 2008
Сообщений: 87
|
Не совсем в тему вопрос, но хочу спросить iNils о причинах использования класса Delegate. Чтобы иметь гибкость при выборе имени функции (onLoadXML)?
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:03. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| array , return |
|
|