Возврат внешних данных из функции в ActionScript - PullRequest
0 голосов
/ 05 октября 2010

У меня есть следующий скрипт, который вызывает текстовый файл:

    /* first create a new instance of the LoadVars object */
myVariables = new LoadVars();
myVariables.load("myFile.txt");
myVariables.onLoad = function(getreading):String{
    var ODOMETER2:String=myVariables.ACADEMICWATER;
    return ODOMETER2;
    trace (ODOMETER2);
}
trace(getreading());

Текстовый файл содержит следующее:

ACADEMICWATER=3002&elec=89

Я могу импортировать значение 3002 вфункция, и я могу проследить это.Тем не менее, я должен быть в состоянии отследить его вне функции, используя trace (getreading ());как показано в последней строке.Это только возвращает значение «НЕ УКАЗАНО».Я в тупике.

Ответы [ 3 ]

1 голос
/ 05 октября 2010

Вы объявляете анонимную функцию (см. Синтаксис AS3 и язык / функции ), на которую нельзя ссылаться по имени. getreading объявлено в вашем коде как нетипизированный параметр этой функции.

Если вы хотите trace результат этой функции, тогда вы должны объявить именованную функцию следующим образом:

function getReading(): String {
    var ODOMETER2:String=myVariables.ACADEMICWATER;
    return ODOMETER2;
}

myVariables.onLoad = getReading;

trace(getReading());
0 голосов
/ 05 октября 2010

LoadVars.onLoad - обработчик событий.Он вызывается LoadVars, как только заканчивается операция асинхронной загрузки.Он принимает логический аргумент, указывающий на успех или неудачу операции.Он ничего не возвращает.

Документация LoadVars.onLoad

В этой функции вы обычно воздействуете на полученные данные, например, сохраняете и обрабатываете их.Вот очень простой пример, показывающий некоторые основные варианты использования:

var ODOMETER2:String;

var myVariables = new LoadVars();
myVariables.load("myFile.txt");
myVariables.onLoad = function(success) {
    trace(success);
    ODOMETER2 = myVariables.ACADEMICWATER;
    processResults();
}

function processResults() {
    trace(ODOMETER2);
    trace(myVariables.ACADEMICWATER);
}

// traces:
// true
// 3002
// 3002
0 голосов
/ 05 октября 2010

getreading - это не имя функции в данном случае, а имя параметра анонимной функции, которая запускается в событии onLoad объекта myVariables.

Поместите переменную ODOMETER2 вне функции и установите ее значение внутри анонимной функции. Тогда вы сможете получить доступ к нему и за пределами функции.

/* first create a new instance of the LoadVars object */ 
var ODOMETER2:String;
myVariables = new LoadVars(); 
myVariables.load("myFile.txt"); 
myVariables.onLoad = function(){ 
    ODOMETER2=myVariables.ACADEMICWATER; 
} 
trace(ODOMETER2); 
...