Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/08/2010, 06:57
rafex
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Ayuda con factorizacion actionscript

Hola foro, pedirles por favor me colaboren con lo siguiente:
Estoy haciendo el jueguito para colorear, donde te aparece una silueta y se puede elegir un color de una paleta y darle ese color a determinada area del dibujo, el codigo q uso es el siguiente:

var aux:Number = 0;
var colortomado:Color;

//aquí asigno un color a las instancias de objeto de un movieclip, es la paleta
// de colores en si
var amarillo:Color = new Color(amarillo_color);
amarillo.setRGB(0xFFFF00);
var azul:Color = new Color(azul_color);
azul.setRGB(0x0000FF);
var rojo:Color = new Color(rojo_color);
rojo.setRGB(0xFF0000);
var violeta:Color = new Color(violeta_color);
violeta.setRGB(0x990066);

//segun el color que elija de la paleta (al hacer clic), guardo su valor
amarillo_color.onPress = function(){
colortomado = amarillo;
}

azul_color.onPress = function(){
colortomado = azul;
}

rojo_color.onPress = function(){
colortomado = rojo;
}

violeta_color.onPress = function(){
colortomado = violeta;
}

//mi dibujo tiene n partes (areas) q son movie clip q tienen su nombre de instancia, para el //ejemplo digamos q es una casa entonces.
//por otro lado si pinte esa area asigno a una variable “val1” el valor de trae y llamo a la funcion //comprobar() que lo que hace es verificar si todas las areas han sido pintadas
techo_mc.onPress = function(){
var nuevocolor:Color = new Color(techo_mc);
nuevocolor.setRGB(colortomado.getRGB());
val1=true;
comprobar();
}

ventana_mc.onPress = function(){
var nuevocolor:Color = new Color(ventana_mc);
nuevocolor.setRGB(colortomado.getRGB());
val2=true;
comprobar();
}
paredes_mc.onPress = function(){
var nuevocolor:Color = new Color(paredes_mc);
nuevocolor.setRGB(colortomado.getRGB());
val3=true;
comprobar();
}


//aquí verifico si todas mis areas fueron pintadas, si fue asi muestro un mensaje,
function comprobar(){
if (val1 && val2 && val3){
trace("FELICIDADES TERMINASTE DE PINTAR");
}
}

//existe un boton para hincar de nuevo…osea poner todas las areas del dibujo en blanco
//y poner los “val” a false
boton_iniciar.onRelease = function(){
var nuevocolor:Color = new Color(techo_mc);
nuevocolor.setRGB(0xFFFFFF);
var nuevocolor:Color = new Color(ventana_mc);
nuevocolor.setRGB(0xFFFFFF);
var nuevocolor:Color = new Color(paredes_mc);
nuevocolor.setRGB(0xFFFFFF);

val1=val2=val3=false;

}

Como veran el ejemplo tiene solo 3 partes (areas) pero el codigo para los colores, para el color que toma, para el color que pinta, comprueba y cerea…es (según yo) el mismo, … y mis dibujos tendran entre 15 y 30 areas, Entonces la pregunta es …
Es posible reducir este codigo, algo asi como FACTORIZARLO, de modo que no tenga q repetir lo mismo por cada area o para cada color.
Espero me puedan colaborar con esto, agradezco mucho su tiempo

Saludos cordiales,
Rafex