AS3 Использование переменной из одной функции в другую - не работает - PullRequest
0 голосов
/ 27 февраля 2012

Невозможно получить значение myXML вне функции, несмотря на то, что оно объявлено снаружи.Что мне здесь не хватает?Данные загружаются и отслеживаются правильно внутри функции.

var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("flightPlannerBoard.xml"));

var myXML:XML;

// Check XML data fully loaded
myLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {

myXML = new XML(e.target.data);
//trace(myXML);
}
trace(myXML);

Ответы [ 3 ]

1 голос
/ 27 февраля 2012

Поскольку ActionScript является асинхронным, как говорили другие, вы не можете контролировать поток выполнения путем размещения кода.То, что вы должны сделать, это контролировать выполнение через события, и поэтому любые действия, которые вы хотите выполнить с загруженным XML, должны быть в функции processXML или в другой функции, которая вызывается из processXML:

var myXML:XML;

function processXML(e:Event):void {
    myXML = new XML(e.target.data);
    trace(myXML);  //this trace will work
    doNextAction();
}

function doNextAction():void {
    trace(myXML);  //this trace will also work
}
0 голосов
/ 27 февраля 2012

Actionscript - это асинхронный язык, означающий, что трасса «вне» обратного вызова будет вызвана до загрузки файла.Порядок выполнения в вашем случае:

  1. создание экземпляра URLLoader
  2. начало загрузки файла
  3. добавление прослушивателя событий для прослушивания полного события
  4. отследить myXML
  5. (или через некоторое время) завершить загрузку XML-файла
0 голосов
/ 27 февраля 2012

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

private var myXML:XML;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...