我基本上是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 发送到无限循环中。
我真的很感激这方面的一些帮助=)
答案 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()
。