Форум 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)
-   -   Как реализовать триггер??? (http://www.flasher.ru/forum/showthread.php?t=74759)

zevvs 28.01.2006 13:54

Цитата:

Сообщение от silin
ну так (если правильно понял):
вызов accessRemote ('init') должен быть не в конструкторе, а в методе объекта, отслеживающего(сетинтервалом,энтерфреймом) WebServicePage.SID..

1). Это, как минимум, оптопопилотомия (оперирование глаза через задний проход)
2). Объекты этого класс, мать его, создаются из разных мест, в разных приложения и т.д. т перетачивать кучу кода - как минимум... не весело... но...
3). ...похоже другого пути нет... :(

silin 28.01.2006 14:57

Цитата:

..создаются из разных мест, в разных приложения и т.д. т перетачивать кучу кода - как минимум...
может быть и нет..
собственно, я имел ввиду такую штуку:
Код:

var watchId: Number;
public function WebServicePage(_parentMovie) {

        watchId=setInterval(this,"sidWatch",10);
}
function sidWatch(){
        if (!WebServicePage.SID) {                       
        this.accessRemote('init');
                clearInterval(watchId);
    }
}


zevvs 28.01.2006 15:01

Спасибо, я выкрутился более изящьно :-) Тем более Ваш метод не дает гарантии что я получу сессию раньше, чем запущу другой запрос :-) Тема закрыта...

7thsky™ 28.01.2006 15:11

а можно поинтересоваться как Вы выкрутились?

zevvs 28.01.2006 15:20

Запросто. Если Вы вникали в тот код, который я показал, то наверное поняли, что я сделал: довольно удобный враппер для soap-запросов. Соответственно, у меня есть набор классов, которые от него унаследованы и реализуют реакции на конкретный soap-вызов. Так вот. Проблема возникала только в точках входа в систему (там, где мне еще не известен идентификатор сессии, но уже сильно нужен). Их, к моей радости оказалось всего 5. Осталось только в этих классах перегрузить init_onResult и добавить проверку в конструктор, примерно так:
Код:

/**
 *  Login Page
 *  Execute auth process
 *  (c) Sibirix, 2006
 */
class LoginPage extends WebServicePage
{
        var service: LoginPage;
        var login, password;
       
        function LoginPage(_parentMovie, _login, _password)
        {
                trace('LoginPage: ' + _login + ':' + _password);
                parentMovie = _parentMovie;
                login = _login;
                password = _password;
            this.WebServicePage(_parentMovie);       
                if (WebServicePage.SID) {
                       
                        accessRemote('LoginPageWebservice_auth', login, password);
                }
        }
        function LoginPageWebservice_auth_onResult(code)
        {
        if (code == 'true') {
                       
                        trace('Auth success');
                        service.parentMovie.attachMovie('AdminGalleriesListPageView', 'adminGalleriesPageView', service.parentMovie.getNextHighestDepth());                       
                } else {
                       
                        trace('Auth fault');
                        service.parentMovie.attachMovie('LoginPageView', 'loginPageView', service.parentMovie.getNextHighestDepth());
                }
        }
        function init_onResult(data)
        {
                _parent.init_onResult(data);
                service.accessRemote('LoginPageWebservice_auth', service.login, service.password);
        }
}



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

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