я не могу получить переменную в функции - PullRequest
0 голосов
/ 02 июня 2010

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

var contentLoader:URLLoader = new URLLoader();
contentLoader.load(new URLRequest("http://localhost/data.php"));

function onComplete(event:Event):void
{        

  var txtu:String = event.target.data;      

}
contentLoader.addEventListener(Event.COMPLETE, onComplete);

trace(txtu);

спасибо.

Ответы [ 3 ]

1 голос
/ 05 июня 2010

Проблема здесь в том, что trace(txtu) выполняется сразу после contentLoader.addEventListener(Event.COMPLETE, onComplete), что означает, что это происходит до того, как URLLoader завершит загрузку. Так что в этой ситуации отследить нечего, поскольку он еще не загружен.

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

Например:

var contentLoader:URLLoader = new URLLoader();
contentLoader.load(new URLRequest("http://localhost/data.php"));

function onComplete(event:Event):void 
{
  var txtu:String = event.target.data;
  continueWithProgram();
} 

contentLoader.addEventListener(Event.COMPLETE, onComplete);

function continueWithProgram():void
{
  trace(txtu);
}
1 голос
/ 06 июня 2010

Вы должны быть в состоянии решить проблему, либо передавая результат в новый метод, подобный этому:

var loaderResult: String;

var contentLoader:URLLoader = new URLLoader();
    contentLoader.addEventListener(Event.COMPLETE, onComplete);
    contentLoader.load(new URLRequest("http://localhost/data.php"));


// #option 1

function onComplete (event:Event): void {
    var txtu:String = event.target.data;
    continueWithProgram(txtu);
} 

function continueWithProgram (value:String): void {
  trace(txtu);
}

или используйте переменную вне обработчика события:

// #option 2

var loaderResult: String;

function onComplete (event:Event): void {
    loaderResult = event.target.data;
    continueWithProgram();
}

function continueWithProgram (): void {
  trace(loaderResult);
}

надеюсь, я смогу пролить свет ..;) С уважением.

1 голос
/ 02 июня 2010

в основном у вас есть переменная, которая в настоящее время объявлена ​​локальной для функции. вам нужно объявить переменную вне функции, в которой определена ваша переменная contentLoader, а затем присвоить значение в функции.

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