Форум 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)
-   -   getRemote - не видно переменных (http://www.flasher.ru/forum/showthread.php?t=143395)

McGyver 15.08.2010 19:35

getRemote - не видно переменных
 
Всем добрый день! Недавно столкнулся с понятием SharedObject.
Пытаюсь сделать подсчет подключенных к серверу посетителей.
Код AS1/AS2:

var nc:NetConnection = new NetConnection();        
connBtn.onRelease = function(){
        nc.connect("rtmp:/someserver");
 
        so = SharedObject.getRemote("my_so", nc.uri, false);       
        so.connect(nc);
 
        if(so.data.id == undefined) so.data.id = 0;
        so.data.id += 1;
 
        output.text += so.data.id;
}

Открываю два плейера, в первом жму коннект. Выводит "1". Во втором тоже жму коннект, но вместо желанной 2 выводит 1, будто никто больше не подключен. Подскажите, пожалуйста, почему ш.обджект не выполняет свою основную функцию? AS2.

Добавлено через 21 час 16 минут
Немного продвинулся вперед.
Код AS1/AS2:

var nc:NetConnection = new NetConnection();        
 
connBtn.onRelease = function(){
        if(disconBtn.enabled == false){
                nc.connect("rtmp:/someserver");
                disconBtn.enabled = true;
                my_so = SharedObject.getRemote("my_so", nc.uri, false);       
                my_so.connect(nc);
        }
 
        if(my_so.data.id == undefined) my_so.data.id = 0;
        my_so.data.id += 1;
 
        my_so.onSync = function(){
                output.text += this.data.id + newline;               
        }
}

Теперь при нажатии на "коннект" оба плейера правильно выдают n+1.
Но тут есть одна подляна. onSync сначала встречает connect и при первом нажании this.data.id = undefined. Со второго клика идут цифры. То есть счетчик выводится "с опозданием".
Я решил вынести my_so.onSync за пределы функции кнопки.

Сейчас код выглядит так
Код AS1/AS2:

var nc:NetConnection = new NetConnection();        
 
connBtn.onRelease = function(){
        if(disconBtn.enabled == false){
                nc.connect("rtmp:/someserver");
                my_so = SharedObject.getRemote("my_so", nc.uri, false);
                my_so.connect(nc);
 
                if(my_so.data.id == undefined) my_so.data.id = 0;
                my_so.data.id += 1;
                disconBtn.enabled = true;
 
        } 
}
 
my_so.onSync = function(){
        syncStatus.text += my_so.data.id + " sync" + newline;               
}

Но тут onSync не происходит вообще, поле syncStatus пустует, никакая трассировка не проходит.

Если трассировать my_so.data.id в любой другой функции то честно и правильно выдает число.
Как здесь включить onSync?


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

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