我正在将Actionscript 2.0与PHP结合使用,现在我可以调用我的PHP文件并接收数据,但显然我必须立即使用该数据,我不能用它来填充我的类变量。
这就是我想要的:
class user {
var lastname:String;
function user(in_ID:Number){
var ontvang:LoadVars = new LoadVars();
var zend:LoadVars = new LoadVars();
zend.ID = in_ID;
zend.sendAndLoad("http://localhost/Services/getUser.php", ontvang, "POST");
ontvang.onLoad = function(success:Boolean) {
if (success) {
lastname = ontvang.lastname;
} else {
lastname = 'error';
}
};
}
}
我发现这是AS2中的一个大问题,如果您正在加载XML数据,我发现这篇文章可以解决它,但我似乎无法使用它来使用LoadVars: http://www.actionscript.org/forums/showthread.php3?t=144046
任何帮助将不胜感激..
答案 0 :(得分:2)
当你的onLoad处理程序被调用时,它被调用就好像它是LoadVars实例的成员函数,而不是你的用户实例。
有几种解决方法,一种方法是使用Delegate.create()创建一个按预期工作的函数,例如:
import mx.utils.Delegate;
class user {
var lastname:String;
var ontvang:LoadVars;
function user(in_ID:Number){
ontvang = new LoadVars();
var zend:LoadVars = new LoadVars();
zend.ID = in_ID;
ontvang.onLoad = Delegate.create(this, onLoad);
zend.sendAndLoad("http://localhost/Services/getUser.php", ontvang, "POST");
};
}
function onLoad(success:Boolean) : Void
{
if (success) {
lastname = ontvang.lastname;
} else {
lastname = 'error';
}
}
}
不要忘记加载是异步的 - 当您创建一个用户对象时,成员变量将不会立即可用。您可能需要做的是让您的用户对象能够像LoadVars一样发出准备信号(例如,使用调用者提供的回调函数),以便您的应用程序由这些异步事件驱动。