El script con el que tengo problemas consiste en una serie de arrays donde se detallan los atributos de los personajes/enemigos, que son copiados a "nuevas" arrays cuando comienza la una batalla. Digo "nuevas" por que cualquier modificación en ellas tambien la orginial.
Les dejo el script simplificado con unas notas para su comprension rapida.
Lo unico que ahi en la bibloteca es un Movie Clip vacio llamado "vacio"
Trabajo con actionscript 2.0
Código actionscript:
.Ver original
_root.game = new Object(); //arrays de los atributos de enemigos y personajes game.enemigos = [["rata", 100, 10], ["Hormiga", 50, 5], ["Lobo", 150, 15]]; game.personajes = [["a", 100, 10], ["b", 50, 5], ["c", 150, 15]]; game.manadas = [[1, 1, 1], [2, 1, 1, 2], [3, 3], [3, 2, 1]]; game.skills = [[1, 0, 0], [1, 1, 0], [1, 20, 1]]; //funcion que se llama al inicio de cada batalla. function construirbg(manada) { //clip vacio que mas en la version completa contiene los "sprites" de los enemigos, personajes, interface, etc. _root.attachMovie("vacio", "vacio", this.getNextHighestDepth()); _root.bg = _root.vacio; //aca comienza mi problema //seguro no es el scrip idoneo, por que al modificar //la "nueva" array, tambien me modifica la original. _root.bg.enemigos = new Array(); //personajes _root.bg.personajes = _root.game.personajes; trace("personajes > "+_root.bg.personajes.join(" ; "));//devuelve los personajes //enemigos for (var i = 0; i<_root.game.manadas[manada].length; ++i) { _root.bg.enemigos.splice(1,0,_root.game.enemigos[_root.game.manadas[manada][i]]); _root.bg.enemigos[i][0]+=i//para diferenciarlos, cambia todos y terminan siendo = trace("entro enemigo >"+_root.bg.enemigos[i]); } } construirbg(0); trace(_root.bg.enemigos.join(" - "))// todos iguales trace(_root.bg.enemigos[0][0])// son trace(_root.bg.enemigos[1][0])// iguales
Espero haber sido claro.
Desde ya muchas gracias.
Saludos!