Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   sendAndLoad и event внутри класса (http://www.flasher.ru/forum/showthread.php?t=125192)

xzwiex 18.05.2009 19:44

sendAndLoad и event внутри класса
 
Собственно задача такая: отправить запрос на сервер, получить результат, и если результат удовлетворяет определенным требованиям(при логине сервер возвращает "ОК"), вернуть true. Как только это происходит, повесить событие onLogin

В классе пишу
Код AS1/AS2:

 
import mx.events.EventDispatcher 
 
class Flat {
 
        private var dispatchEvent:Function;
        var addEventListener,removeEventListener:Function;       
        var username:String = "";
        var password:String = "";
        var url:String = "http://myserver.com";
        private var accepter:LoadVars;
        var myArray:Array;
 
 
        function Flat(user:String,pass) {
                myArray = new Array();
                username = user;
                password = pass;
                EventDispatcher.initialize(this);
 
        }
 
        function login() {
                var req:LoadVars = new LoadVars();
                var accepter:LoadVars = new LoadVars();
                accepter.onData = eventer;
                req.decode("mode=login");
                req.decode("user="+username);
                req.decode("hpassword="+password);
                req.sendAndLoad(url,accepter,"POST");
        }
        function eventer(myString) {
                var res:Boolean = false;
                if (myString == "OK") {res = true;}
                var eventObject:Object = {target:this, type:"onLogin"};
                eventObject.res = res; 
                dispatchEvent(eventObject);
        }
 
}

В мувике пишу
Код AS1/AS2:

var myClient:Flat = new Flat("user","pass");
 
var myListnerObj:Object = new Object;
myListnerObj.onLogin = function() {
    trace ('ok');
}
myClient.addEventListener("onLogin",myListnerObj);
myClient.login();

Собственно, заветного "ок" не наблюдается. Где моя ошибка?

silin 18.05.2009 22:06

метод класса присвоить onData можно только через Delegate
Код AS1/AS2:

accepter.onData = Delegate.create(this, eventer);

иначе этот eventer() работает "от имени" accepter, у которого нет dispatchEvent

xzwiex 19.05.2009 07:15

спасибо, сейчас проснусь и попробую =)


Часовой пояс GMT +4, время: 16:50.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.