【问题标题】:Accessing Responder Object for AMF Call in Action Script 3访问 AMF Call in Action Script 3 的响应程序对象
【发布时间】:2011-05-18 10:43:13
【问题描述】:

我是 AS3 的初学者,我正在使用 FlashDevelop 作为 IDE,我正在尝试连接到 AMF3 服务 (amfphp) 并获取用户详细信息。

我可以在 AMFinit() 函数中使用此代码连接到 AMF 服务...

private function AMFinit():void{
    AMFService.objectEncoding = ObjectEncoding.AMF3;
    AMFService.connect(AMFServiceURL);
    AMFService.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

    var responder:Responder = new Responder(AMF_MyUserInfo, AMF_onFault);           
    AMFService.call("Danisman.GetUserWithIdentifier", responder, user_identifier);

    // I NEED TO USE returned object data here!!
}

在 AMF_MyUserInfo() 函数上,我可以获取从 Responder 返回的对象,并且可以成功跟踪它,这是代码

private function AMF_MyUserInfo(res:Object):void {
    AMF_onResult(res);
    trace(res.user_ID + res.username);
}

但要在 AMF_MyUserInfo() 函数之外使用,我想将该“res”对象复制到另一个对象。我尝试在 Class 中指定一个对象,并在 AMF_MyuserInfo() 函数中使用“this.myobject = res”将 res 设置为该对象,但它不起作用。我也试过“this.myobject.username = res.username”,但也没有用。

我是 OOP 的新手,如何在全局或 AMFinit() 函数中使用这个 res 对象?

感谢您的帮助...

【问题讨论】:

    标签: flash actionscript-3 oop remoting


    【解决方案1】:

    如果您可以在函数中跟踪res 值,那么一切都应该没问题。不知道哪里出了问题。

    但是我不熟悉 AMF 服务。所以不能告诉你它是如何处理你的res 对象的。因为这就是 AS3 中的对象所发生的事情:

    var startObject : Object;
    var dublicate : Object;
    
    startObject = new Object ();   // creating new object
    startObject.userID = 'myname'; // setting some parameters there
    
    dublicate = startObject;       // referencing you dublicate to the startObject
    startObject.userID = null;     // changeing startObject property
    trace ( dublicate.userID );    // dublicate is also affected ( output: null )
    
    // another example
    startObject = new Object ();   // creating new object
    startObject.userID = 'myname'; // setting some parameters there
    
    dublicate = new Object ();     // creating new dublicate object
    dublicate.userID = startObject.userID; // setting the dublicate parameter
                                           // with start Object parameter
    
    startObject.userID = null;     // changing startObject property
    trace ( dublicate.userID );    // dublicate is not affected, because it is not
                                   // a reference but independant object.
                                   // ( output: myname)
    

    如果您想在全局范围内使用任何属性,请创建新类:

    package
    {
        public class GlobalVariables
        {
            static public var userName : String;
            static public var userID : String;
        }
    }
    

    然后你可以像这样访问它们:

    GlobalVariables.userName
    

    希望对你有所帮助。

    【讨论】:

    • 为了以这种方式使用 GlobalVariables,变量需要是静态的。或者,您可以将此类设置为单例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多