Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2008, 15:55
reserum
 
Fecha de Ingreso: noviembre-2006
Mensajes: 19
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta Sobre el tutorial de Tonypa...

¡¡Buenas!! Mirad, estoy haciendo una Aplicación Multiusuario, creo que lo más potente que he hecho hasta ahora en Flash :S Ya tengo bastantes modulos desarrollados, y anteayer comencé a construir lo que viene siendo la interfaz del juego. Para realizarlo, me estoy apoyando en el tutorial de Tonypa (el de www.tonypa.pri.ee, el de Tile Based Games). Me he descargado el capítulo 18, que es el que me interesa, pero... ¡tatán! Duda Triste
No se si alguien conocerá este tutorial, ojalá sí (para que sea más fácil la ayuda) en cualquier caso, les digo lo que tengo...
Al conectarse alguien a la aplicación, automáticamente recibe del servidor todos los usuarios conectados y sus parametros (posición en x e y, etcétera). Lo que hice fue un while que por cada usuario recibido, llamase a la función "newuser(idi,x,y);" hasta aquí todo bien. Pero luego, al implementar lo de Tonypa... Todo se vino abajo :S Seleccioné el código que hacía el AttachMovie de un usuario (lo de Tonypa es solamente para un usuario) y me fijé lo que tenía más o menos. Al principio, declara:
char = {xtile:2, ytile:1, speed:10, moving:false, width:16, height:16};
A esto, por si las moscas, le añadí al principio id=idi, simplemente para guardar la identidad del usuario. Más tarde, iguala ob = char, y comienza a hacer algunas operaciones (todo el rato con ob). Entonces llega el AttachMovie. En un principio es este:
game.clip.attachMovie("char", "char", 300);
Yo lo sustituí por este:
game.clip.attachMovie("char", "char_"+idi, 300);
Para attachear un nuevo clip por cada Login. Luego ya procede a colocar el usuario en la pantalla. Yo modifiqué ese script tal que así:
ob.clip = game.clip["char_"+idi];
trace(ob.clip);
//place char mc
ob.clip._x = ob.xiso;
ob.clip._y = ob.yiso;
ob.clip.gotoAndStop(ob.frame);
Y ahora el problema (por fin). Cuando inicio sesión yo solo (sin nadie más conectado) me aparece el cubito donde tiene que ser y lo puedo mover perfectamente. Sin embargo, si se loggea otro... ¡tachán! veo a dos usuarios, pero si muevo yo (es decir, el primer cubito en teoría) ... se mueve el que acaba de entrar.
Para entender esto mejor, creo que falta una pequeña parte del código, que es la que hace moverse:
var ob = char;
if (!ob.moving) {
ob.clip.char.gotoAndStop(1);
} else {
moveChar(ob);
ob.clip.char.play();
}
He probado a poner donde dice var ob = char; en vez de char, char_(y un número) y luego conectarme con ese número. Pero así ni siquiera se mueve, simplemente se queda quieto. Se que el problema debe de estar en alguna definición de variables... Pero no lo consigo :S y es la última duda que tengo para poder terminar el proyecto (y eso que he tenido muchas... Servidores... conexiones... crossdomains...).
Siento algo tan extenso, pero no lo he podido acortar :S
Por cierto, como sabréis, cuando definimos una variable (var nombre = "Pedro") también se puede hacer de esta otra manera set(nombre,"pedro"). ¿Existe alguna manera estilo SET para definir variables no precedidas por var (es decir: nombre = "Pedro"). Es por algo que se me acaba de ocurrir para solucionar el problema este del movimiento... Aunque ya llevo cien mil pruebas y nada :S
Por cierto, el tutorial en cuestión está disponible en esta dirección: http://www.tonypa.pri.ee/tbw/tut18.html