2009-06-15 29 views
1

我将Actionscript 2.0与PHP结合使用,现在我可以拨打我的PHP文件并接收数据,但显然我必须立即使用该数据,我无法使用它来填充我的类变量。AS2:使用sendandload加载类变量

这就是我想要的:

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

任何帮助,将不胜感激..

回答

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那样发出准备就绪信号(例如用调用者提供的回调函数),这样你的应用就可以被这些异步事件驱动。

+0

好的2件事: 1.我在哪里可以找到委托类? 2.在onLoad函数中它现在调用ontvang.lastname,但在onLoad函数中没有ontvang变量.. 虽然已经感谢! – Pmarcoen 2009-06-15 09:31:41