Buenos dias. Soy nuevo en el foro y relativa mente nuevo en Flash. Estoy trabajando en un juego RPG de batallas por turno, al estilo de las viejas consolas.
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!