Lord que j'essaye un morceau de code créant un shared object, changeant une variable dans ce SO, en AS2 je reçois bien l'événement onSync et le changement de valeur s'est bien effectué MAIS en AS3 je n'y arrive pas. Avez vous une piste?
Voici le morceau de code en as2:
Action Script
import mx.utils.Delegate;
function newMovement(evtObj:Object):Void{
trace(so.data.mousePosition.x);
//trace bien la nouvelle valeur affectée à "mousePosition"
}
var nc:NetConnection = new NetConnection();
nc.connect("mon_flux_rtmp");
var so:SharedObject = SharedObject.getRemote("testSO", nc.uri, false);
so.onSync = Delegate.create(this, newMovement);
so.connect(nc);
function releaseBtn():Void{
trace("releaseBtn");
so.data.mousePosition = {x: 50, y: 100};
}
btn.onRelease=Delegate.create(this,releaseBtn);
En AS3/FLASH CS3 par contre cela ne fonctionne pas.
Voici mon code en AS3 :
Action Script
import flash.net.NetConnection;
import flash.events.NetStatusEvent;
import flash.net.SharedObject;
import flash.events.SyncEvent;
import flash.net.ObjectEncoding;
import flash.events.AsyncErrorEvent;
function netStatusHandler(e:NetStatusEvent):void{
switch (e.info.code) {
case "NetConnection.Connect.Success" :
initRemote();
break;
}
}
function initRemote():void{
so= SharedObject.getRemote("testSo", nc.uri, false);
so.addEventListener(SyncEvent.SYNC, newMovement);
so.connect(nc);
this.addEventListener(Event.ENTER_FRAME, updatePosition);
}
function newMovement(e : SyncEvent):void{
trace("newMovement");
trace(so.data.mousePosition);
//la fonction newMovement n'est appelé qu'une seul fois
//le trace de "mousePosition" me renvoi toujours undefined quelque soit la méthode de changement de la valeur dans le So(setProperty,setDirty ou directement so.data.mousePosition= )
}
var nc:NetConnection = new NetConnection();
nc.client = this;
nc.connect("mon_flux_rtmp");
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
var so:SharedObject;
function updatePosition(e:Object):void{
//quelque soit la méthode pour changer la valeur de "mousePosition" cela ne fonctionne pas
//so.setProperty("mousePosition",{x: "testx", y: "testy"});
//so.setDirty("mousePosition");
so.data.mousePosition = {x: "testx", y: "testy"};
}
J'ai retourné le problème dans tout les sens mais je n'arrive pas à savoir ce qui ne fonctionne pas en AS3 et fonctionne en AS2. Je vous en supplie un peu d'aide serait le bienvenue pour me tirer cette énorme épingle du pied