从ActionScript中的函数返回外部数据

时间:2010-10-05 05:30:23

标签: actionscript-2

我有以下调用文本文件的脚本:

    /* 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())在函数外部跟踪它;如最后一行所示。这只返回“UNDEFINED”值。我很难过。

3 个答案:

答案 0 :(得分:1)

您正在声明匿名函数(请参阅AS3 Syntax and language / Functions),该名称无法引用。 getreading在您的代码中声明为此函数的无类型参数。

如果你想trace这个函数的结果,那么你应该像这样声明一个命名函数

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

myVariables.onLoad = getReading;

trace(getReading());

答案 1 :(得分:0)

在这种情况下,

getreading不是函数的名称,而是在myVariables对象的onLoad事件上运行的匿名函数的参数名称。

将变量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); 

答案 2 :(得分:0)

LoadVars.onLoad是一个事件处理程序。一旦完成异步加载操作,它就会被LoadVars调用。它采用布尔参数,表示操作成功或失败。它没有返回任何东西。

LoadVars.onLoad documentation

在该功能中,您通常会根据收到的数据进行操作,例如存储和处理数据。这是一个非常简单的示例,显示了一些基本用例:

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