as3: загрузка XML в свойство моего класса, кажется, не делает то, что я ожидал - PullRequest
0 голосов
/ 10 января 2010

Кажется, это должно быть легко, но я не могу понять.

Я пробую очень простой класс, который при создании загружает и XML-файл в свойство класса. Я, должно быть, запутался в базовом понятии, потому что я могу видеть, что XML прекрасно входит в функцию handleComplete, но свойство класса _result остается пустым.

Какую концепцию я здесь упускаю?

Заранее спасибо.

public class MyClass
{
    private var _result;

    public function MyClass()
    {
        var url:String = 'myFile.xml';
        var loader:URLLoader = new URLLoader();
        loader.addEventListener( Event.COMPLETE, handleComplete );
        loader.load( new URLRequest( url ) );

        trace(_result); //returns nothing... didn't I just load it?
    }

    private function handleComplete( event:Event ) : void
    {
        try
        {
            var res:XML = new XML( event.target.data );
            _result = res;

            trace(_result); // this writes the myFile.xml to command line as I would expect.
        }
        catch ( e:TypeError )
        {
            // some error handling code
        }
    }
}

}

1 Ответ

1 голос
/ 10 января 2010

Причина, по которой первая трассировка ничего не печатает, заключается в том, что запрос файла не является синхронным. Это означает, что он работает в фоновом режиме, и только когда это делается (что может занять некоторое время, если файл очень большой или шаткое сетевое соединение), он вызывает функцию handleComplete.

В то время, когда вызывается ваш первый trace (), handleComplete еще не был вызван, поскольку файл еще не завершил загрузку.

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