Доступ к объекту респондента для вызова AMF в действии Сценарий 3 - PullRequest
0 голосов
/ 18 мая 2011

Я новичок в AS3 и использую FlashDevelop в качестве IDE, и я пытаюсь подключиться к службе AMF3 (amfphp) и получить информацию о пользователе.

Я могу подключиться к службе AMF с помощью этого кодав функции AMFinit () ...

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" в другой объект.Я попытался указать объект в классе и установить res для этого объекта в функции AMF_MyuserInfo () с помощью this.myobject = res, но это не сработало.Я также попробовал «this.myobject.username = res.username», но это также не сработало.

Я новичок в ООП, как я могу использовать этот объект res глобально или в функции AMFinit ()?

Спасибо за вашу помощь ...

1 Ответ

0 голосов
/ 18 мая 2011

если вы можете отследить значение 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)

Если вы хотите использовать какое-либо свойство globaly, создайте новый класс:

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

Тогда вы можете получить к ним доступ следующим образом:

GlobalVariables.userName

надеюсь, это вам немного поможет.

...