-1

我基本上是一个菜鸟ActionScript,我遇到了一个问题。我想将文本文件中的变量加载到_root我的电影中。就像,文本文件包含&var=value&var2=value2&,我希望它们直接进入_root,这样我就可以将它们称为_root.varand _root.var2。首先,我尝试使用显而易见的解决方案loadVariables。我已经通过以下功能完成了它:

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

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

所以我尝试使用 LoadVars 而不是 loadVariables。这个函数让我很失望,因为没有将 vars 直接转储到的选项_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 函数中的跟踪返回正确的值,但后面的跟踪返回未定义。我试过等待 onLoad 在这个循环中发生:

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

这使Flash陷入了无限循环。

我真的很感谢在这个问题上的一些帮助=)

4

1 回答 1

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().

于 2013-12-08T07:19:10.513 回答