Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   вопрос по XML(function return) (http://www.flasher.ru/forum/showthread.php?t=111112)

MrXoT 16.04.2008 11:59

вопрос по XML(function return)
 
у меня такая проблема я не могу сделать вывод функции onLoad
вот код

Код:

function pars(){
  var arr=new Array();

  var xml:XML = new XML();
  xml.ignoreWhite = true;

  xml.onLoad = function(success:Boolean){
      if(success){
          for(var i=0; i<xml.childNodes.length; i++){
            var node_info=xml.childNodes[i].firstChild;
            arr[i]=node_info;
          }
      }
  }

  xml.load("xml.xml");
  return arr;
}


var a = pars();
trace(a) //и выводит пустой массив, что я не так делаю?


alekslitvinenk 16.04.2008 12:18

Надо вот так:

Код:


var node_info=xml.firstChild.childNodes[i];


iNils 16.04.2008 12:25

Код:

var arr:Array = new Array ();
var xml:XML = new XML ();
xml.ignoreWhite = true;
xml.onLoad = function (success:Boolean) {
        if (success) {
                for (var i = 0; i < this.childNodes.length; i++) {
                        var node_info = this.childNodes[i].firstChild;
                        arr[i] = node_info;
                }
                trace (arr);
        }
};
xml.load ("xml.xml");


qazwsx 16.04.2008 12:32

xml.onLoad это ивент т.е кагда у xml лсучается onLoad выполняется далее описанная функция. Вы же пытаетесь из совершенно другой функции вернуть параметр этой :).

MrXoT 16.04.2008 12:33

alekslitvinenk
я знаю как надо
XML структура у меня такая <node></node>

iNils
да я так пробывал но как вывести массив через return?

qazwsx
ну вот как из этого ивента сделать вывод массива ? :)

qazwsx 16.04.2008 12:40

Так как написал inils только вместо трейс ретурн.

iNils 16.04.2008 12:49

Забудьте про return, он вам в данном случаи не поможет.

MrXoT 16.04.2008 12:52

какие тогда могут быть идеи...
просто нужна функция которая бы выводила массив с информацией из XMLа

Nik_M 16.04.2008 12:53

Я вот тоже задавался этим вопросом и тоже не мог вывести массив за пределами функции, выводился пустой. Все сделал как написал iNils и все равно не работает, внутри функции массив заполняется, а вот после уже пустой:(

iNils 16.04.2008 12:55

Она у вас есть, называется xml.onLoad
Как только вы начали подгружать внешние данные, можете забыть про линейность выполнения кода, все действеия теперь фнутри методов и событий.

Кстати, на этом форуме наказывают за глобальное игнорирование запятых.

Цитата:

Сообщение от Nik_M
все равно не работает, внутри функции массив заполняется, а вот после уже пустой:(

Все наоборот. Вы путаете последовательность действий.
Если написать такой код
Код:

var arr:Array = new Array ();
var xml:XML = new XML ();
xml.ignoreWhite = true;
xml.onLoad = function (success:Boolean) {
        if (success) {
                for (var i = 0; i < this.childNodes.length; i++) {
                        var node_info = this.childNodes[i].firstChild;
                        arr[i] = node_info;
                }
                trace ("B:" + arr);
        }
};
xml.load ("xml.xml");
trace ("A:" + arr)

То "A:" выведется сразу, а "B:" может появиться, через секунду, минуту, миллисекунду, но всегда после "A:", так как на загрузку, даже с локального диска, нужно время.


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

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