ActionScript:将文件中的变量加载到_root中

时间:2013-12-08 06:51:40

标签: flash actionscript loadvars

我基本上是ActionScript的菜鸟,我遇到了问题。我想将文本文件中的变量加载到我的电影的_root中。例如,文本文件包含&var=value&var2=value2&,我希望它们直接进入_root,以便我可以将其称为_root.var_root.var2。 首先,我尝试使用明显的解决方案 loadVariables 。我通过以下功能完成了它:

function getState (save){
    //loadVariables("getstate.php?save="+save, "/");
    loadVariables("state.txt, "/");
}

我已尝试将其加载到“_root”而不是“/”,但仍然没有。请求被发送,但文本文件的内容在进入我的代码的过程中在超空间中丢失。

所以我尝试使用LoadVars而不是loadVariables。这个功能让我很失望,因为没有选择将变量直接转储到_root,但我决定尝试一下。以下是我的函数在LoadVars中的样子:

function getState (save){
    varReceiver = new LoadVars();
    varReceiver.onLoad = function(){
        varsRecieved=true;
        _root.notloggedin = this.notloggedin;
        _root.nostate = this.nostate;
        _root.saveName=this.saveName;
        //and lots of other variables
        trace (_root.saveName);
    };
    varReceiver.load("state.txt");
    trace (_root.saveName);
}

onLoad函数内部的跟踪返回正确的值,但返回undefined后的值。我已经尝试用这个循环等待onLoad:

while (varsRecieved != true){
    trace ("not yet...");
}

Flash 发送到无限循环中。

我真的很感激这方面的一些帮助=)

1 个答案:

答案 0 :(得分:1)

将信息加载后需要执行的代码放在一个单独的函数中,并在onLoad处理程序的末尾调用该函数:

function getState (save){
    varReceiver = new LoadVars();
    varReceiver.onLoad = function(){
        _root.notloggedin = this.notloggedin;
        _root.nostate = this.nostate;
        _root.saveName=this.saveName;
        //and lots of other variables
        trace (_root.saveName);
        doRest();
    };
    varReceiver.load("state.txt");
}

function doRest()
{
    // ...
}

请注意,getState()将在加载信息之前返回,因此现有代码可能必须移至doRest()