1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
| vit = 10;
_root.onEnterFrame = function ()
{
if (Key.isDown(38))
{
perso._y = perso._y - 10;
perso.gotoAndStop(7);
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positionx="'+_root.perso._x+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positiony="'+_root.perso._y+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
return;
}
if (Key.isDown(40))
{
perso._y = perso._y + 5;
perso.gotoAndStop(5);
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positionx="'+_root.perso._x+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positiony="'+_root.perso._y+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
return;
}
if (onKeyDown(40))
{
perso._y = perso._y + 5;
perso.gotoAndStop(2);
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positionx="'+_root.perso._x+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positiony="'+_root.perso._y+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
return;
}
if (Key.isDown(37))
{
perso._x = perso._x - 5;
perso.gotoAndStop(5);
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positionx="'+_root.perso._x+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positiony="'+_root.perso._y+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
return;
}
if (Key.isDown(39))
{
perso._x = perso._x + 5;
perso.gotoAndStop(6);
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positionx="'+_root.perso._x+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
texteSend = new XML('<deplacement pseudo="'+_root.pseudo+'" positiony="'+_root.perso._y+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
return;
}
perso.gotoAndStop(1);
}
;
bEnvoyer.onRelease = function()
{
if(_root.texte!="") // si la zone de texte n'est pas vide
{
// on crée une nouvelle chaine xml avec le pseudo et le texte ...
texteSend = new XML('<message pseudo="'+_root.pseudo+'" value="'+_root.texte+'"/>');
_root.socket.send(texteSend); // ... et on l'envoi au serveur
}
_root.texte=""; // on vide la zone de texte (plus confortable pour le chatteur)
}
// associée à onConnect
function connexion(isOk)
{
if(isOk) // la connection s'est bien déroulée
{
texteSend = '<message pseudo="'+_root.pseudo+'" action="viens de se connecter" />';
socket.send(texteSend); // on envoit automatiquement à tout le monde un message d'arrivée
}
else _root.Area.text="Echec de la connexion !"; // message d'erreur
}
// associée à onXML
function reception(chainee)
{
trace(chainee);
prev = chainee.previousSibling;
chaine = chainee.firstChild; // on regarde le premier fils (il est seul donc pas de pb)
while (chaine.nodeName == null) // on parcours tous les noeuds jusqu'à en trouver un non nul
{
chaine = chaine.nextSibling;
}
if (chaine.nodeName == "message") // notre noeud message est detecté
{
// on affiche alors le contenu de l'attribut pseudo et de l'attribut value
if (chaine.attributes.value.length != null) {
_root.Area.text+=chaine.attributes.pseudo+"> "+chaine.attributes.value+"\n"; }
if (chaine.attributes.action.length != null) {
_root.Area.text+=chaine.attributes.pseudo+" "+chaine.attributes.action+"\n";
}
// on scroll la zone de texte si nécessaire
if(_root.Area.scroll < _root.Area.maxscroll)
_root.Area.scroll++;
}
if (chaine.nodeName == "deplacement") // notre noeud message est detecté
{
if (chaine.attributes.positionx.length != null) {
_root.Area.text+=chaine.attributes.pseudo+" à changer de position (x) en : "+chaine.attributes.positionx+"\n";
if (positionx == undefined) { positionx = chaine.attributes.positionx; }
if (positionx < chaine.attributes.positionx) { depl = "droite"; } else { depl = "gauche"; } // Déplacement ?
if (chaine.attributes.pseudo != pseudo) {
reference = perso.duplicateMovieClip('perso_1',2);
perso_1._x = chaine.attributes.positionx;
perso_1._y = chaine.attributes.positiony;
} // Detection d'un mouvement ?
positionx = chaine.attributes.positionx;
}
if (chaine.attributes.positiony.length != null) {
_root.Area.text+=chaine.attributes.pseudo+" a changer de position (y) en : "+chaine.attributes.positiony+"\n";
}
// on scroll la zone de texte si nécessaire
if(_root.Area.scroll < _root.Area.maxscroll)
_root.Area.scroll++;
}
}
// s'execute lors du tout premier chargement de cette scene
// (sécurité pour ne pas multiplier les connexions d'un meme client)
if(!interdit)
{
IP = "127.0.0.1";
PORT = 1024;
socket = new XMLSocket(); // nouvelle instance de XMLSocket()
socket.onXML = reception; // à la reception d'un message du serveur, reception(chaine) sera exécutée
socket.connect(IP, PORT); // connexion au serveur sur le port 18000
socket.onConnect = connexion; // dés que la connexion a lieu, connexion() est lancée
interdit=true; // la scene a été chargée une première fois donc true
}
stop(); |
Partager