Bonjour,

J'apprends actuellement le flash (AS2).. Je n'est pas beaucoup de connaissances actuellement mais j'essaye de résoudre ce premier souci .


J'ai développer actuellement un "début" de jeu (personnage qui se dirige avec les fleches, et avec un "tchat")... Quelque chose de basique qui communique en XML vers un serveur JAVA (Aquaserv).

Le problème est que je n'arrive pas à "charger" les personnages au lancement de la connexion au serveur. J'ai essayé de placer des lignes XML au "onConnect" mais rien y fait .. J'ai beaucoup de mal..


Voici mon code complet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();

N'oubliez pas que mes connaissances sont limité