Salut,
j'ai regardé des dixaines de fois les tut mais j'arrive mal à cerner certains points concernant le communications ciblés.
J'essaye de faire un récapitulatif de ce que j'ai comrpis.
Corrigez moi si je me trompe :
J'ai compris qu'un SO est un object synchronisé avec tous les utilisateurs connectés à ce même SO.
Il est initialisé sur le serveur comme ça :
[code]
this.SO = SharedObject.get("SO", false);[/code]
Le client une fois connecté se synchonise comme ça :
[code]SO = SharedObject.getRemote("SO", nc.uri, false);
SO.onSync = function() {
// Lorsque le SO est modifié sur le serveur cette fonction est lancée
}
SO.connect(NetConnection);[/code]
(je ne sais pas à quoi correspond les param false)
Donc lorsque le SO change de paramètre sur le serveur, par exemple :
[code]this.SO.data.variable = "bonjour"
this.SO.setProperty("users", this.SO.variable);[/code]
Sur le client est appelé la fonction SO.onSync
Voilà ce que j'ai compris sur les SO.
J'ai essayé de faire un call ciblé sans utiliser les SO car je ne sais pas comment m'y prendre précisément on me dit de créer des objets, de faire des call ciblé, mais je n'arrive pas à voir comment il faut faire étant donén que je n'ai que des bouts de code.
Voilà mon appli :
J'ai simplifier le tout, il y a 2 boutons sur la 1ere frame un pour le joueur 1 avec l'id 1 et un pour joueur 2 avec l'id 2. J'ai fait cela pour simuler 2 joueurs différents qui se connectent. Uniquement pour le test.
Chaque joueur connait l'id de son adversaire.
Frame 1 : (login)
[code]stop();
function login1() {
session = new Object();
session.id = 1;
session.idAdversaire = 2;
gotoAndPlay(2);
}
function login2() {
session = new Object();
session.id = 2;
session.idAdversaire = 1;
gotoAndPlay(2);
}
j1.addEventListener("click", login1);
j2.addEventListener("click", login2);
[/code]
Frame 2 : (connexion)
[code]stop();
nc = new NetConnection();
nc.owner = this;
nc.connect("rtmp://192.168.0.100/test_multiusers", session.id, session.idAdversaire);
nc.onStatus = function(info) {
trace(info.code);
if (info.code == "NetConnection.Connect.Success") {
trace("Connecté");
} else {
com = "Problème de connexion.";
}
};
NetConnection.prototype.lancerJeu = function(idAdversaire) {
trace("Votre adversaire "+idAdversaire+" est connecté et prêt à jouer");
gotoAndPlay("jeu");
};
NetConnection.prototype.utilisateurDeconnecte = function(idAdversaire) {
trace("Votre adversaire s'est déconnecté");
gotoAndPlay("fin");
};[/code]
Maintenant sur le serveur :
[code]application.onAppStart = function() {
trace("Applicaiton lancée");
this.tabJoueur = Array();
};
application.onConnect = function(client, id, idAdversaire) {
trace(client);
client.id = id;
client.idAdversaire = idAdversaire;
this.acceptConnection(client);
this.tabJoueur.push(id);
trace("Client se connecte avec l'id : "+client.id+" et cherche l'adversaire : "+client.idAdversaire);
for (idJoueur in this.tabJoueur) {
if (idJoueur == client.idAdversaire) {
trace("Adversaire trouvé");
// je lance la fonction lacerJeu sur les 2 joueurs.
client[id].call("lancerJeu", null, idAdversaire);
client[idAdversaire].call("lancerJeu", null, id);
}
}
};
application.onDisconnect = function(client) {
trace("Client déconnecté.");
client[client.idAdversaire].call("utilisateurDeconnecte", client.id);
// On supprimer le client du tableau
this.tabJoueurTemp = new Array();
for (idJoueur in this.tabJoueur) {
if (idJoueur != client.id) {
this.tabJoueurTemp.push(idJoueur);
}
}
this.tabJoueur = this.tabJoueurTemps
trace("Tabbleau des connectés : "+this.tabJoueur);
};[/code]
Voilà, avec ce code FMS2 me retourne une erreur concernant le client[id], en fait je ne sais pas trop bien manier les objets, je ne connais pas très bien la syntaxe.
Merci par avance.