Удаленный общий объект не запускает метод onSync после обновления

#actionscript-3 #flash-media-server #shared-objects

#actionscript-3 #flash-media-server #общие объекты

Вопрос:

У меня есть игровой сервер, FMS 4.5 на Windows, уже работает prefect, а клиентские приложения были созданы в старом CS4, и все идеально.

Теперь я хочу создать мобильное приложение в AS3, и у меня проблема с удаленным общим объектом, который отлично работает в старой флэш-программе.

Когда пользователи входят в приложение, я получаю обновление с помощью метода onSync. Но всякий раз, когда удаленный общий объект обновляется, я не получаю обновления.

например, на клиенте, где у меня есть main_nc в качестве объекта NetConnection:

 var ncu_so:SharedObject = SharedObject.getRemote("Zusers", main_nc.uri, false);
ncu_so.addEventListener(SyncEvent.SYNC, syncNCU);
ncu_so.client=this;
ncu_so.connect(main_nc);

private function syncNCU(e:SyncEvent):void {
    ........
    //here I receive new info....
}
  

и образец на сервере…

 application.onAppStart = function(){
    this.Zusers_so = SharedObject.get( "Zusers", false );
    ...........
}
function sampleUserEnter(client) {
    var t=new Object();
    t.username=client.username;
    application.Zusers_so.setProperty(client.id,t);
    //this one call is synced with app
}
function sampleChangeName(client,newName) {
    var t=application.Zusers_so.getProperty(client.id);
    t.username=newName;
    application.Zusers_so.setProperty(client.id,t);
    //this IS NOT syncing with app
}
  

Как я уже сказал, этот код работает со старым программным обеспечением flash, но не обновляется при использовании AS3. Есть идеи?

Комментарии:

1. » этот код работает со старым программным обеспечением flash, но не обновляется при использовании AS3 » если вы не использовали AS3 в CS4, тогда как это тот же код? Какой код вы использовали ранее? Вы путаете имя IDE с именем языка, что не имеет особого смысла. Пожалуйста, уточните.

2. Я давно написал код для web во flash CS4 со старым as2, который работает. Сейчас я делаю приложение для мобильного устройства в as3 и ничего не изменю на веб-сервере, потому что оно действительно работает, но в AS3 у меня возникли некоторые проблемы с обновлением удаленного общего объекта, как описано.

Ответ №1:

Я нашел простое решение. Не уверен, почему это работает, но это работает….

 var ncu_so:SharedObject = SharedObject.getRemote("Zusers", main_nc.uri, false);
ncu_so.addEventListener(SyncEvent.SYNC, syncNCU);
//I add the listener for checking status
ncu_so.addEventListener(NetStatusEvent.NET_STATUS, statusNCU);
ncu_so.client=this;
ncu_so.connect(main_nc);

private function syncNCU(e:SyncEvent):void {
    ........
    //here I receive new info....
}
//In function for NetStatus event, I just set a simple property
//which I do not use in the app..
//and sunchronization start working as usual after initial sync
private function statusNCU(ev:NetStatusEvent):void {
    if (ev.info.code == "NetConnection.Connect.Success") {
        ncu_so.setProperty("anyPropertyName",new Date());
    }
}