#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());
}
}