27/08/2010, 06:57
|
| | 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 |